您的位置:首页 > 其它

机试算法讲解:第24题 大水题:谁是素数?

2015-07-31 00:36 246 查看
/*
素数:只能被自身和1整除的大于1的正整数
假设n存在大于等于sqrt(n)的因数y,则z=n/y必同时为n的因数,且其值<=sqrt(n)

关键:
1要将sqrt(n)的值先计算出来,不能放在循环中,这回导致循环多少次就计算多少次平方根
*/

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

bool isPrime(int a)
{
	if(a < 1)
	{
		return false;
	}
	else
	{
		int iBound = (int)sqrt(a*1.0);
		//for(int i = 2 ; i <= sqrt(a) ; i++)//技巧:耗时
		for(int i = 2 ; i < iBound ; i++)
		{
			if(0== a%i )
			{
				return false;
			}
		}
		return true;
	}
}

int main(int argc,char* argv[])
{
	int iNum;
	while(EOF!=scanf("%d",&iNum))
	{
		if(isPrime(iNum))
		{
			printf("Yes\n");
		}
		else
		{
			printf("NO\n");
		}
	}
	system("pause");
	getchar();
	return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: