九度OJ 1047素数判定 解题报告

题目描述:

给定一个数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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值