如何返回一个数字的所有质因数?
如何返回一个数字的所有质因数?
如何判断一个数字n是否是质数?
1)如果该数n小于等于1,则False;不是质数,因为1不是质数,但是1和其他所有数都是互质的;
2)然后i从2开始,依次判断到sqrt(n) 【数字的平方根的数字】,如果这些数字都不能被n整除,换句话说有余数,则说明n是质数;
i = 2
while i*i <= n:
if n%i == 0: return False
i += 1
return True
要测试一个数字是否为质数,为什么我们必须测试该数字是否只能被该数的平方根整除?
精彩 分析的非常精彩。
如果n不是质数,那么n可以分解成a*b,a和b至少有一个应该是小于sqrt(n)的 ,如果两个都大于sqrt(n)那么两者相乘之后,一定大于n。所以,从2到sqrt(n)一定有一个n的因数,如果找不到这样的因数,说明n是质数;
判定一个数是不是质数
def isPrim(n): if n <= 1: return False i = 2 while i*i < n: if n%i == 0: return False return True