题目1044: 素数判定

题目描述

给定一个数n,要求判断其是否为素数(0,1,负数都是非素数)。

 

输入

测试数据有多组,每组输入一个数n。

 

输出

对于每组输入,若是素数则输出yes,否则输入no。

 

样例输入
13
 

样例输出
yes
 

提示 [+]

*** 提示已隐藏,点击上方 [+] 可显示 ***

 

来源

2009年哈尔滨工业大学计算机研究生机试真题

 
/********************************* 
*   日期:2013-3-19
*   作者:SJF0115 
*   题号: 题目1044: 素数判定
*   来源:http://ac.jobdu.com/problem.php?pid=1044
*   结果:AC 
*   来源:
*   总结: 
**********************************/ 
#include<stdio.h>
#include<math.h>
//判断是否是一个素数
int IsPrime(int a){
	//0,1,负数都是非素数
	if(a <= 1){
		return 0;
	}
	//计算枚举上界,为防止double值带来的精度损失,所以采用根号值取整后再加1,即宁愿多枚举一个,也不愿少枚举一个数
	int bound = (int)sqrt(a) + 1;
	for(int i = 2;i < bound;i++){
		//依次枚举这些数能否整除x,若能则必不是素数
		if(a % i == 0){
			return 0;
		}
	}
	return 1;
}

int main (){
	int a;
    while(scanf("%d",&a) != EOF){
		if(IsPrime(a) == 0){
			printf("no\n");
		}
		else{
			printf("yes\n");
		}
    }//while
    return 0;
}


你可能感兴趣的:(哈工大)