导航

判断素数

Posted on 2017-11-25 17:05  Er_in  阅读(220)  评论(0)    收藏  举报

若正整数a>1,且a不能被不超过a的算术平方根的任一素数整除,则a是素数

证明其实很简单(看文字就可以很容易地明白了,连数学证明都不用):

首先,想把任意一个整数拆成两个比它小的正数数(大于1)的乘积,如果这两个数一样,那么显然这两个数就是它的算术平方根(正的平方根)。

接下来,很显然地就会得出,若这两个数不是它的算术平方根,那么这两个数必定一个大于它的平方根,一个小于它的平方根。

【如果说这两个数都大于它的平方根那么乘积就大于它,都小于它的平方根那么乘积就小于它】

所以说只要把它2到它的平方根都试一遍,就相当于把剩下的那一半也试了一遍。

所以说,只需要从2开始循环,每次+1,到它的平方根为止。

如果没有能被整除的数,说明它没有除了1和它本身之外的其它因数。

所以它是个素数。

证毕。。

写程序有两种方法啊,个人比较习惯的是加cmath然后先开方,再循环到算术平方根。for(int i=2;i*i<=n;i++)

另一种,某个整数的平方小于等于它的时候,让它一直模那个整数。直到出了循环为止。int a=sqrt(n);for( int i = 2; i <= a ;i ++)

怎么喜欢怎么来