⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1457_other.cpp

📁 把1到n的数放在一个环里,使相邻的2个数和是质数.用递归做
💻 CPP
字号:
#include <iostream> 
using namespace std; 

bool primes[40]; 
int a[20][2]; 
int top; 
bool use[20]; 


void generatePrimeRing(int n) 
{ 

top=0; 
a[top][0]=1; 
a[top][1]=2; 
int i; 
for(i=0;i<n;i++) 
use[i]=false; 
use[0]=true; 
while(top!=-1) 
{ 

if(top==n-1) 
{ 
if(primes[a[top][0]]) 
{ 
for(i=0;i<n-1;i++) 
cout<<a[i][0]<<" "; 
cout<<a[n-1][0]; 
cout<<endl; 

} 
use[a[top][0]-1]=false; 
top--; 
use[a[top][0]-1]=false; 
top--; 
a[top][1]=a[top+1][0]+1; 
} 
else 
{ 
for(i=a[top][1];i<=n;i+=2) 
if(!use[i-1]&&primes[a[top][0]+i-1]) 
break; 
if(i<=n) 
{ 
a[top][1]=i+2; 
top++; 
a[top][0]=i; 
a[top][1]=i%2+1; 
use[i-1]=true; 
} 
else 
{ 
use[a[top][0]-1]=false; 
top--; 
} 
} 
} 

} 

int main() 
{ 
int testNumber=1,n; 
int i; 
for(i=0;i<40;i++) 
primes[i]=false; 
primes[1]=true; 
primes[2]=true; 
primes[4]=true; 
primes[6]=true; 
primes[10]=true; 
primes[12]=true; 
primes[16]=true; 
primes[18]=true; 
primes[22]=true; 
primes[28]=true; 
primes[30]=true; 
primes[36]=true; 
primes[38]=true; 

bool first=true; 
while(cin>>n) 
{ 


cout<<"Case "<<testNumber++<<":"<<endl; 
if(n%2==0) 
{ 
generatePrimeRing(n); 

} 
cout<<endl; 



} 
return 0; 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -