【入门】歌德巴赫猜想
时间限制: 1.000 Sec 内存限制: 16 MB
题目描述:
任一个大于等于4的偶数都可以拆分为两个素数之和。
输入
一个整数n( 4 <= n <= 200 )
输出
将小于等于n的偶数拆分为2个质数之和,列出所有方案!
样例
输入
10
输出
4=2+2
6=3+3
8=3+5
10=3+7
10=5+5
提示
10=3+7 与10=7+3算一种方案。
具体方案如下:
先设置一个求素数的函数并设定返回值,当其为素数时返回1,不为素数时返回0,最后在主函数中用判断语句看组成偶数的两个数是否都是素数,如果是则输出。
代码如下:
#include <stdio.h>
#include<math.h>
#include <stdlib.h>
int sh(int n)
{
//什么是素数?除了1和它本身以外,不被整除的数,最小的素数是2
//如何判断素数? 1;用2-(n-1)去除,不能整除,说明是素数
// 2:用2-(n/2)去除,不能整除,说明是素数
// 3: 用2-n开根号(Math.sqrt(n))去除,不能整除,说明是素数
int i;
for(i=2;i<=n/2;i++)
{
if(n%i==0)//若m能被某个i整除,提前结束循环。
return 0;
}
if(i>n/2&&n>1)
return 1;
else
return 0;
}
int main()
{
int i,j,k,m;
scanf("%d",&m);
for(i=4;i<=m;i=i+2)
{
for(j=2;j<=i/2;j++)
{
k=i-j;
if(sh(j)&&sh(k))
{
printf("%d=%d+%d\n",i,j,k);
}
}
}
return 0;
}