写一个C语言程序可以验证哥德巴赫猜想:一个大于2的偶数总是可以分解成两个素数的和。
答案:4 悬赏:10
解决时间 2021-03-28 17:06
- 提问者网友:箛茗
- 2021-03-28 08:33
写一个C语言程序可以验证哥德巴赫猜想:一个大于2的偶数总是可以分解成两个素数的和。
最佳答案
- 二级知识专家网友:詩光轨車
- 2021-03-28 09:50
证明是不可能的,因为这在数学上都难以证明,只能用很多数取验证,下面从4 到100 的验证:
#include
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;
}
#include
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;
}
全部回答
- 1楼网友:酒安江南
- 2021-03-28 11:21
#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(" ");
printf(" = %d + %d",j,i - j);
counter++;
}
}
printf(" ");
}
return 0;
}
- 2楼网友:轻熟杀无赦
- 2021-03-28 10:45
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;
}
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;
}
- 3楼网友:想偏头吻你
- 2021-03-28 10:14
#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;
}
}
}
#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;
}
}
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯