Problem1077--质数判断

1077: 质数判断

[Creator : ]
Time Limit : 1.000 sec  Memory Limit : 128 MiB

Description

          质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数。
          如5就是质数,因为它只有1和5两个因数(因数的意思就是能被整除);如8就是合数,因为它除了1和8之外,还有2、4两个因数。
          输入一个正整数,请判断它是不是质数,是就输出Yes,不是就输出No。

Input

一个正整数n(3<=n<=2^31-1

Output

一行,一个单词,“Yes”或者“No”。

Sample Input Copy

5

Sample Output Copy

Yes

HINT

      对于n,可以把1到n的整数全部除一遍,统计出能够整除的因数个数,如果个数等于2,说明是质数,否则,就是合数。如果这样做,你也许可以拿60分。因为当n最大取到2147483647(即2^31-1)时,需要除2147483647次,即运算至少2147483647次,而竞赛配置的计算机一秒的运算大约在2000万次,所以会有超时的错误。


改进:
       事实上,只要从2开始除,除到n的算术平方根就行了,即用n依次从2到sqrt(n)依次取模运算,如果能整除的数量是0,那么就是质数。

Source/Category