解题思路:常规迭代去判断素数。需要注意的是,一般来说为了节省复杂度,素数判断里面的条件往往写成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;

}


点赞(1)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论