求:C语言验证歌德巴赫猜想程序

来源:百度知道 编辑:UC知道 时间:2024/05/28 04:30:29
编写程序验证哥德巴赫猜想。

猜想的内容为:任何一个大于4的偶数都等于两个素数之和。如:6=3+3,8=3+5,20=3+17。。。。

编程要求:用户输入一个偶数,请编写程序输出这个数等于哪两个素数之和。输出结果如下:
xxxxxx calc:
20=3+17
20=7+13

其中,xxxxxx改为你的学号

思路提示:

1、素数的判断方法:如果一个数n不能被2-n/2所有的数整除,则这个数就是素数。

2、编写一个判断一个数是否为素数的函数,如果这个数是素数返回1,否则返回0。

3、在主程序中用户输入一个数n,然后循环变量m遍历3-n/2,判断m和n-m是否都为素数,如果都为素数,则按指定格式输出。

4、在主程序最后加上两个getchar()语句。

/*前不久老师的作业,我自己编的,交流一下吧*/
#include <stdio.h>
#include <math.h>
void main(void)
{
int x,i,j,m,f;
printf("很抱歉,本程序只能验证大于等于6的哥德巴赫猜想\n");
printf("******** calc:\n");
scanf("%d",&x);
if((x%2==0)&&(x>=6))
{
for(i=3;i<=x/2;i+=2)
{
f=1;
for(j=2;j<=sqrt(i);j++)
{
if(i%j==0)
{
f=0;
break;
}
}
if(f==1)
m=x-i;
for(j=2;j<=sqrt(m);j++)
{
if(m%j==0)
{
f=0;
break;
}
}
if(f==1)
{
printf("%d=%d+%d\n",x,i,m);
break;
}
}
}
else
{
printf("您的输入不满足要求!\n");
}
getchar();
}