标题:证明哥德巴赫猜想,即任何一个偶数都可以写成两个质数的和 我为什么错了 ...
只看楼主
白金之星
Rank: 1
等 级:新手上路
帖 子:97
专家分:0
注 册:2018-3-12
结帖率:92.86%
已结贴  问题点数:20 回复次数:6 
证明哥德巴赫猜想,即任何一个偶数都可以写成两个质数的和 我为什么错了?
#include<stdio.h>
#incllude"math.h"
int prime(int n);
main()
{
int a;
printf("请输入一个偶数:");
scanf("%d",&a);
for(int i=1;i<a;i++)
{
if(prime(i)==1&&prime(i-a)==1)
printf("该数可以分为%d和%d",i,i+a);
}
}
int prime(int n)
{
int i;
for(i=2;i<sqrt(n);i++)
{
if(n%i==0)
break;
}
while(i==sqrt(n))
return 1;
}
搜索更多相关主题的帖子: 哥德巴赫猜想 偶数 质数 int for 
2018-03-23 18:31
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1728
专家分:3216
注 册:2015-12-2
得分:7 
在原基础上改了下
#include<stdio.h>
 #include<math.h>
 int prime(int n);
 main()
 {
 int a;
 printf("请输入一个偶数:");
scanf("%d",&a);
 for(int i=1;i<=a/2;i++)
 {
 if(prime(i)==1&&prime(a-i)==1)
 printf("该数可以分为%d和%d\n",i,a-i);
 }
 
 }
 int prime(int n)
 {
 int i;
 if(n<2)return 0;   
 for(i=2;i<sqrt(n);i++)
 {
 if(n%i==0)
 break;
 }
 if(i>=sqrt(n))
 return 1;
 return 0;
 }

[此贴子已经被作者于2018-3-23 21:26编辑过]

2018-03-23 19:00
螃蟹爱吃小鱼
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:51
专家分:145
注 册:2018-3-6
得分:7 
回复 楼主 白金之星
#include<stdio.h>
#include"math.h"
int prime(int n);
void main()
{
    int a;
    printf("请输入一个偶数:");
    scanf("%d",&a);
    for(int i=1;i<=(a/2);i++)
    {
        if(prime(i)==1&&prime(a-i)==1)
            printf("该数可以分为%d和%d\n",i,a-i);
    }
}
int prime(int n)
{
    int i;
    if(n==1)
        return 0;
    else if(n==2)
        return 1;
    else
        for(i=2;i<n;i++)
        {
            if(n%i==0)
            {
                return 0;
                break;
            }   
        }
        if(i==n)
            return 1;

}

[此贴子已经被作者于2018-3-23 20:17编辑过]

2018-03-23 19:35
螃蟹爱吃小鱼
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:51
专家分:145
注 册:2018-3-6
得分:0 
回复 2楼 ehszt
1不算质数,所以还有问题
2018-03-23 19:39
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1728
专家分:3216
注 册:2015-12-2
得分:0 
回复 4楼 螃蟹爱吃小鱼
你说的很对,已更正
#include<stdio.h>
 #include<math.h>
 int prime(int n);
 main()
 {
 int a,flag;
 printf("请输入一个偶数:");
scanf("%d",&a);
 for(int j=2;j<a;j+=2){
 flag=0;
 for(int i=2;i<=j/2;i++)
 {
 if(prime(i)==1&&prime(j-i)==1)
 {
      printf("%d可以分为%d和%d\n",j,i,j-i);
      flag=1;
 }
 }
 if(!flag)printf("%d不可分为两个质数和!\n",j);
 printf("\n\n");
 }
 }
 int prime(int n)
 {
 int i;
 if(n<2||n%2==0)return 0;
 for(i=2;i<sqrt(n);i++)
 {
 if(n%i==0)
 break;
 }
 if(i>sqrt(n))
 return 1;
 return 0;
 }

[此贴子已经被作者于2018-3-23 21:49编辑过]

2018-03-23 21:26
浅草没马蹄
Rank: 2
来 自:湖北
等 级:论坛游民
帖 子:20
专家分:18
注 册:2018-3-10
得分:7 
我就问一句,你们编程都不写注释的吗?
2018-03-23 22:09
白金之星
Rank: 1
等 级:新手上路
帖 子:97
专家分:0
注 册:2018-3-12
得分:0 
回复 4楼 螃蟹爱吃小鱼
我更想知道自己为什么错了
2018-03-23 23:27



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-485524-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016101 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved