解题思路:常规迭代去判断素数。需要注意的是,一般来说为了节省复杂度,素数判断里面的条件往往写成i<x/2,但是这对于很特殊的几个小数字会出现问题,比如对于数字3。所以为了避免额外代码讨论,干脆还是写成i<x得了。这里我选用一个计数判断器j,j=0代表是素数,否则不是素数,而由于循环节的初始因子是从2开始,循环条件又设定成了i<x,所以对于x=2我单独讨论,又因为如果是小于2自然不满足代码循环条件,当然也不是素数,所以也要加上相关代码进行讨论(虽然题目并没有要求,而且题目的输入值大概率不会出现01乃至负整数,但是咱们程序员要有良好的编码习惯,给自己的代码尽可能设置好边界条件)然后主函数里面就尽情调用就ok了!
注意事项:一定要注意012等特殊的边界数字,看看代码对于这些边界数字是否会出现逻辑漏洞!
参考代码:
#include<stdio.h>
#include<math.h>
#include <string.h>
int p(int x){
int i,j=0;
if (x==2) j=0;//2是素数
else if(x<=1) j=1;//小于2的数不会是素数
else{
for(i=2;i<x;i++){
if(x%i==0){
j=1;//不是素数
break;
}
}
if(i==x) j=0;//是素数
}
return j;
}
int main() {
int num;
scanf("%d",&num);
if (p(num)==0) printf("prime");//0代表是素数,1代表不是素数
else printf("not prime");
return 0;
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复