写一个C语言程序可以验证哥德巴赫猜想:一个大于2的偶数总是可以分解成两个素数的和。

用的方法不要太深奥... 用的方法不要太深奥 展开
 我来答
xoalyg
2011-10-24 · TA获得超过4178个赞
知道大有可为答主
回答量:2356
采纳率:100%
帮助的人:2387万
展开全部

#include <stdio.h>

bool IsPrimeNum(int n) {

if(n < 2) return false;

for(int i = 2;i*i <= n;i++)

if(n%i == 0) return false;

return true;

}

int main() {

int counter;

for(int i = 100;i < 103;i += 2) {

printf("%d",i);

counter = 0;

for(int j = 2;j <= i;j++) {

if(IsPrimeNum(j) && (IsPrimeNum(i - j))) {

if(counter%12 == 0) printf("\n");

printf(" = %d + %d",j,i - j);

counter++;

}

}

printf("\n");

}

return 0;

}

furious_tauren
2011-10-24 · TA获得超过4056个赞
知道大有可为答主
回答量:1913
采纳率:100%
帮助的人:774万
展开全部
证明是不可能的,因为这在数学上都难以证明,只能用很多数取验证,下面从4 到100 的验证:

#include <stdio.h>

int prime(int n)
{
int i, flag = 1;
for (i = 2; i * i <= n; i++)
{
if (n % i == 0)
{
flag = 0;
break;
}
}
return flag;
}

int main(void)
{
int n, i;

for (n = 4; n < 100; n += 2)
for (i = 2; i <= n / 2; i++)
{
if(prime(i) && prime(n - i))
printf("%d + %d = %d\n", i, n - i, n);
}
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sun_siliang
推荐于2018-03-07 · TA获得超过2.6万个赞
知道大有可为答主
回答量:9913
采纳率:100%
帮助的人:4675万
展开全部
#include <stdio.H>
#include <math.h>
int prime(int m)
{
int i,n;
if(m==1)return 0;
n=(int)sqrt((double)m);
for(i=2;i<=n;i++)
if(m%i==0)return 0;
return 1;
}
void main()
{
int count,i,number;
count=0;
for(number=6;number<=20;number=number+2)
{
for(i=3;i<=number/2;i=i+2)
if(prime(i)&&prime(number-i))
{
printf("%d=%d+%d ",number,i,number-i);
count++;
if( count%5==0 )printf("\n");
continue;
}
}
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
4747哦
2019-07-17 · TA获得超过675个赞
知道小有建树答主
回答量:365
采纳率:73%
帮助的人:72.7万
展开全部
#include<stdio.h>
#include<math.h>
void fun(int a)
{
int k,m1,m2;
for(m1=2;m1<=a/2;m1=m1+1)
{
for(k=2;k<=sqrt(m1);k++)
if(m1%k==0)break;
if(k>sqrt(m1))
{
m2=a-m1;
for(k=2;k<=sqrt(m2);k++)
if(m2%k==0)
break;
if(k>sqrt(m2))
printf("%d=%d+%d\n",a,m1,m2);}
}
}
main()
{
int i,a;
printf("\n ENTER a:");
while(scanf("%d",&a)==1&&a)
{for(i=2;i<=a;i+=2)fun(i);printf("\n ENTER a:");}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
boy_zh_nk
2011-10-24 · 超过17用户采纳过TA的回答
知道答主
回答量:54
采纳率:0%
帮助的人:43.6万
展开全部
int n;
scanf("%d",&n);
for(p1=n/2,p2=n-p1;p1>=2;p1--,p2++)
{
if(Isprime(p1)&&Isprime(p2))
{printf("ok");break;}
}
int Isprime(int n)
{
int k;
k=sqrt(n);
for(int i=2;i<=k;i++){
if(n%i)==0 return 1;break;}
if(i>k) return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式