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的值*/
}
}
可是我的这一段代码输出的结果中包含不是素数的,不知道问题出在哪。
请问各位前辈,我这一段代码问题出在哪?谢谢 如果两个数都不是素数,返回值就是一样的了。 你把不是素数的作为输入,对程序进行调试下就知道了啊,如使用VC++6.0调试环境进行调试啊。 如果两个数都不是素数,返回值就是一样的了。
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*/
}
} 好学滴人啊
pzy0428 发表于 2010-12-6 21:40 https://www.gdutbbs.com/images/common/back.gif
为了前途 好学滴人啊
pzy0428 发表于 2010-12-6 21:40 https://www.gdutbbs.com/images/common/back.gif
为了前途 你把不是素数的作为输入,对程序进行调试下就知道了啊,如使用VC++6.0调试环境进行调试啊。 ...
顺序号 发表于 2010-12-6 21:27 https://www.gdutbbs.com/images/common/back.gif
调试功能不是很会用 这种问题完全有能力自己排除啊
页:
[1]