- 题目描述:
给定一个数n,要求判断其是否为素数(0,1,负数都是非素数)。
- 输入:
测试数据有多组,每组输入一个数n。
- 输出:
对于每组输入,若是素数则输出yes,否则输入no。
- 样例输入:
13
- 样例输出:
yes
解题思路:
情况1:单独对2进行素数判定:。
情况2:小于2和偶数也需要单独进行判定:
注意:必须先对情况1进行判定之后在对情况2进行判定
情况3:从3开始每次自增2,就是只对奇数进行判定
#include<stdio.h> #include<math.h> bool Judge(int x){//素数判定 if(x==2) return true;//2为素数需要单独进行判断 if(x<2 || x%2==0) return false;//如果是小于2或者是偶数,则不是素数 int bound=(int)(sqrt(x)+1);//定义上限,进行判定,不需要循环进行sqrt的运算,sqrt函数比较消耗内存 for(int i=3;i<bound;i+=2){//只需要对奇数进行判断 if(x%i==0) return false;//不是素数,返回假 else return true;//是素数,则返回真 } } int main(){ int x; while(~scanf("%d",&x)){//输入数据进行素数判定 if(Judge(x)) printf("yes\n"); else printf("no\n"); } return 0; }