| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 9552 人关注过本帖
标题:题目:一个偶数总能表示为两个素数之和。
只看楼主 加入收藏
heishu100
Rank: 1
等 级:新手上路
帖 子:19
专家分:7
注 册:2010-1-28
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:13 
题目:一个偶数总能表示为两个素数之和。
#include "stdio.h"
main()
{int n,h,k,i,j;
scanf("%d\n",&n);
if((n%2)==0)
for(i=1;i=<n;i++)
{j=n-i;for(h=2;h<i;h++)
if((i%h)==0)
       for(k=2;k<j;k++)
if((j%k)==0)
printf("%d=%d+%d\n",n,i,j);
}
else
printf("The number can not change two sushu");
}
请各位看一下,有毛病没有,错误的地方请指教!!!
搜索更多相关主题的帖子: 素数 之和 偶数 
2010-02-26 16:51
lixnkei
Rank: 4
来 自:樱之国度
等 级:业余侠客
帖 子:133
专家分:227
注 册:2008-5-13
收藏
得分:4 
粗略看了一下:

1、scanf 那儿不能有 \n
2、是 i<=n, 不是 i=<n
3、你不是要输出两个素数么?我看代码应该是输出两个偶数哟。


PS:代码写的不规范。。。。




[ 本帖最后由 lixnkei 于 2010-2-26 17:07 编辑 ]


老师说:会写代码的人多如牛毛,但写得很规范的却不多。代码要规范,养成好习惯~!
2010-02-26 17:03
lixnkei
Rank: 4
来 自:樱之国度
等 级:业余侠客
帖 子:133
专家分:227
注 册:2008-5-13
收藏
得分:0 
修改后的程序写在6楼了,炸楼。


[ 本帖最后由 lixnkei 于 2010-2-26 19:55 编辑 ]


老师说:会写代码的人多如牛毛,但写得很规范的却不多。代码要规范,养成好习惯~!
2010-02-26 17:51
xiaopanpan
Rank: 1
等 级:新手上路
帖 子:2
专家分:5
注 册:2010-2-26
收藏
得分:4 
三楼的同僚,你的输出证明了一个偶数等于两个奇数的和,并没有证明一个偶数等于两个素数的和。你看看是不是呢。初来乍到,还请多指点!
2010-02-26 18:43
lixnkei
Rank: 4
来 自:樱之国度
等 级:业余侠客
帖 子:133
专家分:227
注 册:2008-5-13
收藏
得分:0 
回复 4楼 xiaopanpan
哦,对,是素数,我错看成基数了。呵呵。我改一下。
PS:楼主的程序实际上输出的也不是素数


[ 本帖最后由 lixnkei 于 2010-2-26 19:11 编辑 ]


老师说:会写代码的人多如牛毛,但写得很规范的却不多。代码要规范,养成好习惯~!
2010-02-26 19:00
lixnkei
Rank: 4
来 自:樱之国度
等 级:业余侠客
帖 子:133
专家分:227
注 册:2008-5-13
收藏
得分:0 
修改后的程序
程序代码:
# include <stdio.h>
//素数判断函数
bool IsPrime(int val)
{
    int i;
    if (val <= 3) //优化程序,1~3必定是素数
    {
        return true;
    }
//开始判断是否素数
    for (i=2; i<val; i++)
    {
        if (val%i == 0)
        {
            break;
        }
    }
    if (i == val)
        return true;  //
    else
        return false; //
}
//主函数
int main(void)
{
    int b, j, i;//被减数、减数、i循环变量
    printf("请输入一个偶数:");
    scanf("%d", &b);
    if(b%2 == 0)
    {
        //开始循环并输出
        for (i=1; i<b; i++)
        {
            j = b-i;
            if (IsPrime(j))
            {
                if (IsPrime(b-j))
                {
                    printf("%d + %d =%d\n", j, b-j, b);
                }
            }
        }
    }
    else
        printf("你输入的不是偶数:");
    return 0;
}



老师说:会写代码的人多如牛毛,但写得很规范的却不多。代码要规范,养成好习惯~!
2010-02-26 19:54
xiaopanpan
Rank: 1
等 级:新手上路
帖 子:2
专家分:5
注 册:2010-2-26
收藏
得分:0 
回复 6楼 lixnkei
呵呵
2010-02-26 20:11
dydsdyds
Rank: 6Rank: 6
来 自:Java
等 级:侠之大者
帖 子:217
专家分:457
注 册:2010-2-14
收藏
得分:4 
呵呵,新手们就要多多练习。

c语言刚开一学期,就换开VB...
2010-02-27 15:57
shanyinj
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-11-28
收藏
得分:0 
回复 6楼 lixnkei
厉害厉害,学习了
2010-11-28 20:24
bityangke
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-7-28
收藏
得分:0 
回复 6楼 lixnkei
算是挖坟吧,我觉得你的代码有些繁琐,而且同一种形式表述了两次
#include <stdio.h>
#include <math.h>
main()
{
    int n,i,j,m,k=0;
    printf("请输入一个偶数:\n");
    scanf("%d",&n);
    if(n%2==0)
    {
        for(i=3;i<=n/2;i+=2)
        {
            for(j=2;j<=sqrt(i);j++)
                if(i%j==0)
                    break;
            if(j>sqrt(i))
            {   
                m=n-i;
                for(j=2;j<=sqrt(m);j++)
                    if(m%j==0)
                        break;
                if(j>sqrt(m))
                {
                    printf("%d=%d+%d\n",n,i,m);
                    k++;
                }
            }
        }
    }
    else
        printf("您输入的不是偶数!:");
    printf("%d\n",k);
}
2013-07-28 11:07
快速回复:题目:一个偶数总能表示为两个素数之和。
数据加载中...
 
   



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

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