| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 760 人关注过本帖
标题:【处女贴】哪位高手能帮小女子指正一下程序中的错误?
只看楼主 加入收藏
Chris_F
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-10-21
收藏
 问题点数:0 回复次数:7 
【处女贴】哪位高手能帮小女子指正一下程序中的错误?
[un]各位大哥,小女子初学C,老师让做一个小程序已验证“哥德巴赫猜想”:当输入一个大于6的偶数时,就会分解成两个素数,以下程序我调试了一下,只能判定能分解为带3的偶数,百思不得其解,万望赐教,呵呵[un][/un][/un]





#include "stdio.h"
void main ()
{
    int a,b,c=1,d=1,m,n,s,i=3,j,k;
     printf ("请输入一个大于6的偶数:\n");
     scanf("%d",&s);
     if(s<=6)printf("Sorry ,the number you input is not bigger than 6\n");
     else if(s%2!=0)printf("sorry , the one you input is not an even number\n");
     else
         for (i=3;i<s;i++)
            
         {
             a=i;
             b=s-i;
             for(j=2;j<a;j++)
             {
                 m=a%j;
                 c*=m;
             }    
             for(k=2;k<b;k++)
             {
                 n=b%k;
                 d*=n;
             }
             if((d!=0)&&(c!=0))
                 printf("%d=%d+%d",s,a,b);
         }
}
搜索更多相关主题的帖子: 小女子 
2008-10-23 21:25
Tchong
Rank: 1
等 级:新手上路
帖 子:117
专家分:0
注 册:2008-10-17
收藏
得分:0 
我帮你列一个可运行的吧
如下:
#include<stdio.h>
#include<math.h>
int pn(int n);
main()
{
int num,i,f1,f2;

printf("        验证歌德巴赫猜想      \n\n");

while(1)
{
  printf("输入一个大于6的偶数(输入0退出):“);
scanf("%d",&num);
if(0==num)
beark;
for(i=3;i<=num/2;i+=2)
{
   f1=pn(i);

f2=pn(num-i);

     if(f1&&f2)
      {
        printf("%d=%d+%d\n",num,i,num-i);
                         break;
                     }
                 }
               }
           }
        int pn(int n)
           {
           int j;
           float k;
           k=sqrt(n);
           for(j=2;j<=k;j++)
             {
                if(n%j==0)
                   return 0;
                     }
                 return  1;
}


你应该看得明白吧?不用我解说吧?
2008-10-24 01:19
Tchong
Rank: 1
等 级:新手上路
帖 子:117
专家分:0
注 册:2008-10-17
收藏
得分:0 
你的编程有很多漏洞上,自己在检查一遍吧,我就不提出来了,我编的该能运行。
2008-10-24 01:22
Tchong
Rank: 1
等 级:新手上路
帖 子:117
专家分:0
注 册:2008-10-17
收藏
得分:0 
上面的程序我编的时候没有打草稿,我发现了一点小错误;下面的是我重新编过而且可运行的:
#include<stdio.h>
#include<math.h>
int pn(int n);
main()
{
int num,i,f1,f2;

printf("        验证歌德巴赫猜想      \n\n");

while(1)
{
  printf("输入一个大于6的偶数(输入0退出):");
scanf("%d",&num);
if(0==num)
break;
for(i=3;i<=num/2;i+=2)
{
   f1=pn(i);

f2=pn(num-i);

     if(f1&&f2)
      {
        printf("%d=%d+%d\n",num,i,num-i);
                         break;
                     }
                 }
               }
           }
        int pn(int n)
           {
           int j;
           float k;
           k=sqrt(n);
           for(j=2;j<=k;j++)
             {
                if(n%j==0)
                   return 0;
                     }
                 return  1;
}


绝对可运行,我已经校对和运行过一次,刚才不好意思,回复你一个有点小错误的程序 ,现在这个一定行的。
2008-10-24 01:31
Chris_F
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-10-21
收藏
得分:0 
呵呵,你的程序我看了,没看懂,哈哈,不过还是很感谢
2008-10-24 12:55
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
循环判断由大于6的偶数拆分出来的两个数是否都为素数,只要有就证明结论是对的。

不过有点问题是要证明的数是多大才是合理的,总不能把全部(无数)的数都做一遍吧

倚天照海花无数,流水高山心自知。
2008-10-24 13:05
hybistr
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-10-24
收藏
得分:0 
尊重原著,改动较少
#include "stdio.h"
void main ()
{
    int a,b,c=1,d=1,m,n,s,i=3,j,k;
     printf ("请输入一个大于6的偶数:\n");
     scanf("%d",&s);
     if(s<=6)printf("Sorry ,the number you input is not bigger than 6\n");
     else if(s%2!=0)printf("sorry , the one you input is not an even number\n");
     else
         for (i=3;i<s/2+1;i++)
            
         {
             c=d=1;
             a=i;
             b=s-i;
             for(j=2;j<a;j++)
             {
                 m=a%j;
                 c&=m?1:0;
             }   
             for(k=2;k<b;k++)
             {
                 n=b%k;
                 d&=n?1:0;
             }
             if((d!=0)&&(c!=0))
                 printf("\n%d=%d+%d",s,a,b);
         }
}
2008-10-25 00:32
快速回复:【处女贴】哪位高手能帮小女子指正一下程序中的错误?
数据加载中...
 
   



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

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