Python - 素数算法不适用于更高的数字
Python - prime number algorithm doesn't work with higher numbers
我是 python 的新人,我的简单程序有问题。
我发现了一些简单的算法,可以判断输入数字是否为素数。 Evrything 适用于输入数字 2 或 13。当我使用更大的数字时会出现问题(我只需要使用更大的数字)。
num = 3231817448941
if num > 1:
for i in range(2,num):
if (num % i) == 0:
print(num,"is not a prime number")
print(i,"times",num//i,"is",num)
break
else:
print(num, "is a prime number")
else:
print(num,"is not a prime number")
我输入的数字是 3231817448941。因为这个数字是质数,所以它应该打印:
Output should be:
3231817448941 is a prime number
但是运行这个程序后,我的控制台是空的,没有打印任何东西。
此外,当我使用长度相同但不是质数的相似数字时,它也有效。
正如我所说,我是 python 的新人,如果有任何建议,我将不胜感激。
一个改变可以加快进程很多
num = 3231817448941
if num > 1:
for i in range(2,int(num**0.5)+1): # Dont have to check to n, just sqrt(n)
if (num % i) == 0:
print(num,"is not a prime number")
print(i,"times",num//i,"is",num)
break
else:
print(num, "is a prime number")
else:
print(num,"is not a prime number")
您可以找到更多优化here
我是 python 的新人,我的简单程序有问题。
我发现了一些简单的算法,可以判断输入数字是否为素数。 Evrything 适用于输入数字 2 或 13。当我使用更大的数字时会出现问题(我只需要使用更大的数字)。
num = 3231817448941
if num > 1:
for i in range(2,num):
if (num % i) == 0:
print(num,"is not a prime number")
print(i,"times",num//i,"is",num)
break
else:
print(num, "is a prime number")
else:
print(num,"is not a prime number")
我输入的数字是 3231817448941。因为这个数字是质数,所以它应该打印:
Output should be:
3231817448941 is a prime number
但是运行这个程序后,我的控制台是空的,没有打印任何东西。 此外,当我使用长度相同但不是质数的相似数字时,它也有效。
正如我所说,我是 python 的新人,如果有任何建议,我将不胜感激。
一个改变可以加快进程很多
num = 3231817448941
if num > 1:
for i in range(2,int(num**0.5)+1): # Dont have to check to n, just sqrt(n)
if (num % i) == 0:
print(num,"is not a prime number")
print(i,"times",num//i,"is",num)
break
else:
print(num, "is a prime number")
else:
print(num,"is not a prime number")
您可以找到更多优化here