主题:这是个古老的填字游戏,一起玩玩吧!
shengmpp1234
[专家分:0] 发布于 2011-07-06 08:30:00
3*3的方阵填入1-n(n>=10)内的9个数,使得所有相邻的两个数字之和为质数?求解法?
回复列表 (共3个回复)
沙发
Fly_ [专家分:0] 发布于 2011-07-25 23:29:00
#include <iostream>
using namespace std;
bool shusu(int a)
{
int j,i=a;
if(i<2) return false;
for(j=2;j<=i/2;j++)
if(i%j==0) return false;
if(j>i/2) return true;
}
void main(void)
{
int n;
int a1,a2,a3,a4,a5,a6,a7,a8,a9,a0;
cout<<"请输入范围n:";
cin>>n;
for(a1=2;a1<n;a1++)
for(a2=2;a2<n;a2++)
for(a3=2;a3<n;a3++)
for(a4=2;a4<n;a4++)
for(a5=2;a5<n;a5++)
for(a6=2;a6<n;a6++)
for(a7=2;a7<n;a7++)
for(a8=2;a8<n;a8++)
for(a9=2;a9<n;a9++)
{
if(shusu(a1+a2))
if(shusu(a1+a4))
if(shusu(a2+a3))
if(shusu(a2+a5))
if(shusu(a3+a6))
if(shusu(a4+a7))
if(shusu(a4+a5))
if(shusu(a5+a8))
if(shusu(a5+a6))
if(shusu(a6+a9))
{
cout<<a1<<'\t'<<a2<<'\t'<<a3<<endl;
cout<<a4<<'\t'<<a5<<'\t'<<a6<<endl;
cout<<a7<<'\t'<<a8<<'\t'<<a9<<endl;
cout<<endl<<endl<<endl<<endl;
goto m;
}
}
m: ;
}
我的代码不能完全做到你想要的 但是你可以参考参考 或许有帮助
板凳
cgl_lgs [专家分:21040] 发布于 2011-07-26 14:32:00
楼上代码很要不得啊。。。
3 楼
筛月孤桐 [专家分:0] 发布于 2011-08-11 22:20:00
先填写第一行和第一列,然后再按顺序填写,似乎这样思考量比较少
我来回复