八人口 发表于 2010-12-4 23:53

C语言新人求助,谢谢

题目:孪生素数是指两个相差为2 的素数。例如3 和5,5 和7,11 和13 等。编写程序输出m 对(m 由键盘输入)孪生素数。要求设计函数prime 用于判断某整数是否素数。


下面是我编的代码:



#include"stdio.h"
#include"math.h"
    main()
    {
    int m,j,l,n;               /*定义变量*/
    int prime(int n);         /*函数的声明*/
    printf("Please input the numbers:");   /*提示输入*/
    scanf("%d",&m);                              
    for(j=0,l=2;j<=m;j++,l++)            /*利用循环输出所需的对数*/
      if(prime(l+2)==prime(l)+2)         /*判断是否符合孪生对数的条件*/
      {
            printf("%d=%d+2\n",l+2,l);   /*输出结果*/
      }
    getch();                                 /*WINTC需要这一个*/
    }
    int prime(int n)                        /*需要调用的函数*/
    {
    int k,i;                                    /*定义变量*/
    for(;n<=100000;n++)             /*利用循环,找出指定范围内的素数*/
      {
      if(n!=2&&n%2==0)continue;/*排队除2以外的偶数*/
      k=sqrt(n);
      for(i=2;i<k;i++)
            if(n%i==0)break;
      if(i>=k)return(n);            /*如果N是素数,即返回N的值*/
      }
   }


可是我的这一段代码输出的结果中包含不是素数的,不知道问题出在哪。
请问各位前辈,我这一段代码问题出在哪?谢谢

iptton 发表于 2010-12-6 17:43

如果两个数都不是素数,返回值就是一样的了。

顺序号 发表于 2010-12-6 21:27

你把不是素数的作为输入,对程序进行调试下就知道了啊,如使用VC++6.0调试环境进行调试啊。

pzy0428 发表于 2010-12-6 21:40

八人口 发表于 2010-12-9 22:05

如果两个数都不是素数,返回值就是一样的了。
iptton 发表于 2010-12-6 17:43 https://www.gdutbbs.com/images/common/back.gif

谢谢。明白。下面是我更正后的代码:
#include"stdio.h"
#include"math.h"
    main()
    {
    int m,j,l,n;               /*定义变量*/
    int prime(int n);         /*函数的声明*/
    printf("Please input the numbers:");   /*提示输入*/
    scanf("%d",&m);                              
    for(j=1,l=2;j<=m;l++)            /*利用循环输出所需的对数*/
      if(prime(l+2)&&prime(l))         /*判断是否符合孪生对数的条件*/
      {
            printf("%d=%d+2\n",l+2,l);   /*输出结果*/
            j++;
      }
    getch();                                 /*WINTC需要这一个*/
    }
    int prime(int n)                        /*需要调用的函数*/
    {
    int i;                                    /*定义变量*/
    for(i=2;i<n;i++)            /*利用循环,找出指定范围内的素数*/
      {
      if(n%i==0) return 0;   /*如果不是素数则返回0*/

      if(i>=n) return 1;   /*如果是素数则返回1*/

      }
   }

八人口 发表于 2010-12-9 22:11

好学滴人啊
pzy0428 发表于 2010-12-6 21:40 https://www.gdutbbs.com/images/common/back.gif

为了前途

八人口 发表于 2010-12-9 22:11

好学滴人啊
pzy0428 发表于 2010-12-6 21:40 https://www.gdutbbs.com/images/common/back.gif

为了前途

八人口 发表于 2010-12-10 09:21

你把不是素数的作为输入,对程序进行调试下就知道了啊,如使用VC++6.0调试环境进行调试啊。 ...
顺序号 发表于 2010-12-6 21:27 https://www.gdutbbs.com/images/common/back.gif


    调试功能不是很会用

猪的柏拉图 发表于 2010-12-13 19:49

这种问题完全有能力自己排除啊
页: [1]
查看完整版本: C语言新人求助,谢谢