c语言怎么判断一个数是素数

这个错在哪

判断是否是质数最直观和简单的方法就是从2开始直接除,能除尽(余数为0)就不是质数。则C语言实现为:
int isprime(int m)
{
int i;
for(i=2;i<m;i++)
if(m%i==0)
return 0;
else
return 1;
}
该算法的时间复杂度O(n)。
可以改进一下,根据如果一个数是合数,那么它的最小质因数肯定小于等于它的平方根。用反证法可以证明一下。假设x是n的最小质因数,则存在n/x=p。p>x,x*p=n。如果x不小于等于它的平方根,则x*x>n,而p>x,故x*p>n,假设不成立。合数是与质数相对应的自然数。一个大于1的自然数如果它不是合数,则它是质数。也就是说如果一个数能被它的最小质因数整除的话,那它肯定是合数,即不是质数。所以判断一个数是否是质数,只需判断它是否能被小于它开跟号后的所有数整除,因此,这样做的运算少了很多,降低了时间复杂度。追问

#include
#include
int main()
{
int i,k,m;
int n=0;
scanf("%d",m);
k=sqrt(m)+0.01;
for(i=2;i<k;i++)
{if(m%i==0)
printf("This is not a prime");
break;
if(i==k+1)

printf("This is a prime");
}

return 0;
}

我这个错在哪

温馨提示:内容为网友见解,仅供参考
第1个回答  2018-10-25
不要拍照,直接copy代码上来看吧。。。。看不清。。。追问

#include
#include
int main()
{
int i,k,m;
int n=0;
scanf("%d",m);
k=sqrt(m)+0.01;
for(i=2;i<k;i++)
if(m%i==0)
printf("This is not a prime");
break;
if(i==k+1)

printf("This is a prime");

return 0;
}

相似回答