解题思路:
题目要求是让我们写两个函数,一个是判断素数函数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的问题就解决了
【偶数求和】 (C++代码)浏览:785 |
2003年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:729 |
A+B for Input-Output Practice (IV) (C语言代码)浏览:484 |
C语言程序设计教程(第三版)课后习题6.8 (C语言代码)浏览:798 |
C语言程序设计教程(第三版)课后习题6.5 (C++代码)浏览:487 |
printf基础练习2 (C语言代码)浏览:653 |
1157题解浏览:769 |
蚂蚁感冒 (C语言代码)浏览:1408 |
演讲大赛评分 (C语言代码)浏览:1696 |
Tom数 (C语言代码)浏览:581 |