写一个判断素数的函数,在主函数输入一个正整数,输出是否是素数的消息。

#include<stdio.h>int main() {int m,i,s=2,n;scanf("%d",&n);for(m=2;m<n;m++){if(n%m!=0)s=s+1; if(n%m==0)s=s;}if(s>=n)printf("prime\n");if(s<n)printf("not prime\n");return 0;}只有九十分,不知道哪里错了?

你的算法效率极低,基本是最差的一种算法了,不过好在n的范围非常有限,不会形成性能瓶颈。

你的程序没有判断n是否为1的情况,修改了一下:

#include<stdio.h>

int main()
{
int m,i,s=2,n;
scanf("%d",&n);
if(n==1)
{
printf("not prime");
return 0;
}
for(m=2;m<n;m++)
{
if(n%m!=0)
s=s+1;
if(n%m==0)
s=s;
}
if(s>=n)
printf("prime\n");
if(s<n)
printf("not prime\n");
return 0;
}追问

嗯嗯,后来我也发现了。不过这样子改完了的话,n==1的时候会显示两行的,后面还要再加一个if(n>1)的前提条件哦。
还有请问更好的方法有哪样子的呢?我是初学者,还不是很了解这些。

嗯嗯,后来我也发现了。不过这样子改完了的话,n==1的时候会显示两行的,后面还要再加一个if(n>1)的前提条件哦。
还有请问更好的方法有哪样子的呢?我是初学者,还不是很了解这些。

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答