求助,孪生素数问题
题目:孪生素数是指两个相差为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的值*/
}
}
可是我的这一段代码输出的结果中包含不是素数的,不知道问题出在哪。
请问各位前辈,我这一段代码问题出在哪?谢谢