题目:哥德巴赫猜想中写到,一个充分大的偶数(大于等于4),它可以分解为两个素数(质数)的和。
任务是将输入的偶数n ,分解为两个素数的所有可能打印出来。
例如:
8 = 3 + 5.
20 = 3 + 17 20 = 7 + 13.
42 = 5 + 37 40= 11 + 31 40= 13 + 29 40= 19 + 23.
先分解成c=a+b;在依次对a和b进行判断是否是质数,如果同时是质数,就打印。
一个数是否是质数,就是一个数只能被1和它自身整除,没有其他因子。就需要尝试它能否被从2到它的平方根之间的数整除。
#include <stdio.h>
#include <math.h>
int number;
int Firstnum;
int Secondnum;
int main()
{
int x,y;
int Temp;
printf("Please input Number\n");
scanf("%d",&number);
for(x=2;x<number/2;x++)
{
Firstnum =x;
Temp =sqrt(Firstnum)+1;
for(y=2;y<Temp;y++)
{
if(Firstnum % y == 0 )
{
Firstnum = 0;
break;
}
}
Secondnum=number-x;
Temp=sqrt(Secondnum)+1;
for(y=2;y<Temp;y++)
{
if(Secondnum % y == 0)
{
Secondnum = 0;
break;
}
}
if(Firstnum&&Secondnum)
printf("%d = %d + %d\r\n",number,Firstnum,Secondnum);
}
return 0;
}