C语言,自己写函数,判断一个数是不是素数,求改正哪错了

C语言,自己写函数,判断一个数是不是素数,求改正哪错了#include <stdio.h>
#include<math.h>
int main()
{
int prime(int x);
int m;
printf("please input an integer number: ");
scanf("%d",&m);
if(prime(m))
printf("%d is a prime number.\n",m);
else
printf("%d is not a prime number.\n",m);
return 0;
}
int prime(int x)
{
int i,k;
k=sqrt(x);
for(i=2;i<=x;i++)
if(x%i!=0)
break;
else
return k;
}

int prime(int x)
{
 int i,k;
 
 k=sqrt(x);//这个k的赋值太复杂了 ä¸ºäº†ä¸€ä¸ªè¿”回值还要算平方根...
 
 for(i=2; i<=x; i++)//这里判断素数应该是除了1和他本身 æ‰€ä»¥è¿™é‡Œåº”该是i<x
 {
  if(x%i!=0) //当i==x的时候这个条件必然成立
  {
   break;//break之后跳出循环 ç„¶åŽè¿”回值呢? è¿™é‡Œå¯ä»¥ç›´æŽ¥return不是素数了 å› ä¸ºå·²ç»åˆ¤æ–­å‡ºæœ‰ä¸€ä¸ªæ—¢ä¸æ˜¯1也不是他本身的因数了
  }
  else
  {
   return k;
  }
 }
 
 //缺少返回值
}追问

那大佬我这应该怎么改

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-05-21
int prime(int x)
{
int i,k;
k=sqrt(x);
for(i=2;i<=x;i++)
if(x%i!=0)
break;
else
return k;
}
修改成
int prime(int x)
{
int i,k;
k=sqrt(x);
for(i=2;i<=k;i++)
if(x%i==0)
continue;
if(i<=k) return 1;
else return 0;
}追问

还是不对啊

追答

int prime(int x)
{
int i,k;
k=sqrt(x);
for(i=2;i<=k;i++)
if(x%i==0) continue;
if(i==k+1) return 1;
else return 0;
}

相似回答