求助

来源:互联网 发布:网络黄金王晨芳照片 编辑:程序博客网 时间:2024/06/05 05:40

将1,2,3,。。。。。。,20排成一圈,使任意两相邻数之和均为素数

#include <stdio.h>

#include <math.h>


int main()
{
    int i;
    int j = 0;
    int k = 0;
    int m;
int n;
    int a [ 20 ];
int b [ 10 ];
int c [ 10 ];
    for( i = 1; i <= 20; i ++)
    {
        if(i%2 == 0)
        {
k = j;
b [ k ] = i;
            j++;
printf("b [%d]=%d\n",k,b[k]);


}
else
{
c [ j ] = i;
printf("c [%d]=%d\n",j,c[j]);
}
}
for( m = 0; m<10; m++)
{
   for( n = 0; n<10; n++)
{
a [ m ] = c [ m ]+b [ n ];
   if(prime(a [ m ]) && a [ m ]<40)
{
printf("%d  %d  ",c [ m ],b [ n ]);
b [ n ] = 40;
    c [ m ] = 40;
break;
}
}
}
}

prime (int i)
{
    int j;
if( i == 2) return 1;
if( i%2 == 0) return 0;
    for( j = 3; j <= (int)sqrt((double)i)+1; j += 2)
    {
        if( i%j == 0)
           return 0;
}
return 1;

}

按照题意,将1-20分为了偶数和奇数两个数组,因为素数除二以外一定是素数,所以采用偶数数组加奇数数组,得到新的数组求其是否为素数,但求出的数始终有合数存在。

在分奇偶数组时应注意其数组。

结果:1 2 3 4 5 6 7 10 9 8 11 12 13 16 15 14 17 20 19 18

0 0
原创粉丝点击