c++验证哥德巴赫猜想

来源:百度知道 编辑:UC知道 时间:2024/09/24 08:31:32
我的c++题目:一个不小于6的偶数可以表示为两个素数之和。例如6=3+3,8=3+5,....18=5+13.将6~100之间的偶数都表示成2个素数之和,打印时一行打印5组。素数就是只能被1和自身整除的正整数,最小的素数是2.要就定义并调用函数prime(m)判断m是否为素数,当为素数时返回1,否则返回0.
以下为我的源程序:
#include <stdio.h>
main()
{
int m,n,i,count;
int prime(int m);
count=0;
for(i=6;i<=100;i=i+2){
for(m=3;m<=i;m++){
if(prime(m)==1)
for(n=3;n<=i;n++){
if(prime(n)==1)
if(i==m+n){
printf("%d=%d+%d ",i,m,n);
count++;
if(count%5==0)
printf("\n");
}
}
}
}
}
int prime(int m)
{
int j;
for(j=2;j<=m/2;j++){
if(m%j==0) break;
if(j>=m/2) return 1;
}
return 0;
}
我的问题在于为何我的打印结果是从10=5+5开始的,却少了6=3+3 8=3+5??
看了半天想不出所以然。望高手纠错!

int prime(int m)
{
int j;
for(j=2;j<=m/2+1;j++){ /********** 这里 **********/
if(m%j==0) break;
if(j>=m/2) return 1;
}
return 0;
}

for(i=6;i<=100;i=i+2){
for(m=3;m<=i;m++){
这里应该是平行的循环
而不是包含关系的循环
你没有发现10=3+7,14=3+11等也没有出现吗