解题思路:
题目要求是让我们写两个函数,一个是判断素数函数judge,另一个是主函数main;在judge中判断传过来的实参m要先判断是否是大于等于2的数,只有m>=2才可以判定它是不是素数,所以说输入的数要符合要求。接下来就是如何判断是素数,素数是指除了1和本身以外不能再被其他数整除的数,于是利用取余法,设for(i=2;i<m;i++) if(m%i==0),则不是素数,break终止循环;否则如果是素数,也要break终止循环。
注意事项:
无论是判断得到是素数或者不是素数,只要得到结果,就立即break终止循环。
参考代码:
#include<stdio.h>
int judge(int m)
{
int i;
if(m>=2)
{
for(i=2;i<m;i++)
{
if(m%i==0)
{
printf("not prime\n");
break;
}
else
{
printf("prime\n");
break;
}
}
}
return 0;
}
int main()
{
int m;
scanf("%d",&m);
judge(m);
return 0;
}
0.0分
3 人评分
两个问题:第一,第一个if语句不应该包含等于2,否则2这个数通过循环出来被判定为not prime,错误;第二,循环语句中你的判定方式只排除了那些非素数中含有因子为二的非素数,简单点说你只判断了一个数是否含有2这个因子,错误。
#include<stdio.h> #include<math.h> void panduan(int x); int main() { int n; scanf("%d",&n); panduan(n); return 0; } void panduan(int x) { int tag=0; for(int i=2;i<=sqrt(x);i++) if(x%i==0) tag++; if(tag==0) printf("prime\n"); else printf("not prime\n"); }
#include <stdio.h> int judge(int m) { int i; if(m==2) { printf("prime\n"); } else if(m>2) { for(i=2;i<m;i++) { if(m%i==0) { printf("not prime\n"); break; } else { printf("prime\n"); break; } } } } int main() { int m; scanf("%d",&m); judge(m); return 0; } 再来个if else就好了。
我的soul 2022-11-12 16:41:59 |
这样2的问题就解决了