| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1066 人关注过本帖
标题:要求将6~50之间偶数都表示成两个素数之和(不知道哪里出问题了)
只看楼主 加入收藏
布衣书生
Rank: 1
等 级:新手上路
帖 子:10
专家分:7
注 册:2011-12-8
结帖率:100%
收藏
 问题点数:0 回复次数:5 
要求将6~50之间偶数都表示成两个素数之和(不知道哪里出问题了)
下面是我编的程序,不知道该怎么改了
#include
#include
void main(void)
{
    int i,m,k=0,s,l=0;
        for(m=6;m<=50;m+=2)
    {
        for(s=3;s<50;s++)
        {
            m=s+(m-s);
            k=(int)sqrt(s);
            for(i=2;i<=k;i++)
                 if(s%i==0) break;     这里好像出问题了,求大神指导一二
               if(i>k)
            l=(int)sqrt(m-s);
                    for(i=2;i<=l;i++)
                        if((m-s)%i==0)  break;
                        if(i>l)
                            printf("%d=%d+%d\n",m,s,(m-s));
        }                        
    }
}
真正的结果如下:

[ 本帖最后由 布衣书生 于 2011-12-8 16:39 编辑 ]
搜索更多相关主题的帖子: include 
2011-12-08 16:36
qwermy
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:34
专家分:160
注 册:2011-12-3
收藏
得分:0 
if( i > k && m-s>0 ) { }  的作用范围没定好


[ 本帖最后由 qwermy 于 2011-12-8 16:49 编辑 ]
2011-12-08 16:46
布衣书生
Rank: 1
等 级:新手上路
帖 子:10
专家分:7
注 册:2011-12-8
收藏
得分:0 
回复 2楼 qwermy
还是不行呃
2011-12-08 16:52
傻瓜菜
Rank: 2
来 自:earth
等 级:论坛游民
帖 子:73
专家分:66
注 册:2011-10-4
收藏
得分:0 
程序代码:
#include<stdio.h>
#include<math.h>
void main()
{
    int i,m,k=0,s,l=0,ok_1=0,ok_2=0;
    for(m=6;m<=50;m=m+2)
    {
        for(s=3;s<50;s++)
        {
            m=s+(m-s);
            k=sqrt(s);
            for(i=2;i<=k;i++)
            {
                if(s%i==0) 
                {
                    ok_1=0;
                    break;
                }
                else ok_1=1;
            }
            l=sqrt(m-s);
            for(i=2;i<=l;i++)
            {
                if((m-s)%i==0)  
                {
                    ok_2=0;
                    break;
                }
                else
                    ok_2=1;
            }
            if(ok_1&&ok_2&&s<(m-s))
            {
                printf("%d=%d+%d\n",m,s,(m-s));
            }
        }                        
    }
}

这是帮你小改动的程序,你说的那里我觉得没什么问题,到是后面的两个if(i>k)和if(i>l)让我有些摸不着头脑,我也是大一,初学,水平不高,请多多指教!
2011-12-08 16:58
战斗!立
Rank: 2
等 级:论坛游民
帖 子:29
专家分:43
注 册:2011-11-26
收藏
得分:0 
程序代码:
#include<stdio.h>
#include<math.h>

void main()
{
    int i,m,k=0,s,l=0;
    int flag,temp;
    for(m=6;m<=50;m+=2)
    {
        for(s=3;s<50;s++)
        {
            m=s+(m-s);
            k=(int)sqrt(s);
            for(i=2;i<=k;i++)
            {
                if(s%i==0) 
                {
                    flag = 1;
                    break;
                }
                else
                    flag = 0;
            }     
            l=(int)sqrt(m-s);
            for(i=2;i<=l;i++)
            {
                if((m-s)%i==0)
                { 
                    temp = 1;
                    break;
                }
                else
                    temp = 0;
            }
            if(flag == 0 && temp ==0)
                printf("%d=%d+%d\n",m,s,(m-s));
         }                        
     }

 }

这是正确的代码,下次拷贝的时候请用代码模式
2011-12-08 17:01
布衣书生
Rank: 1
等 级:新手上路
帖 子:10
专家分:7
注 册:2011-12-8
收藏
得分:0 
回复 5楼 战斗!立
额,会的
2011-12-08 18:57
快速回复:要求将6~50之间偶数都表示成两个素数之和(不知道哪里出问题了)
数据加载中...
 
   



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

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