У меня очень большое число, и я хочу создать программу, которая найдет два простых числа, которые при умножении дадут исходное число.
Ex.
Original_number = 299
// The program should get these two numbers:
q = 13
p = 23
Программа запускается нормально при запуске, но в определенный момент она просто останавливается, и я не уверен, что не так.
Код:
import time
import math
def main():
time1 = time.clock()
q = int(0)
p = int(0)
finalnumber = int(377)
print("in main \n")
print("q = ", q)
print("\n p = ", p)
gotResult = 0
while(gotResult == 0):
p = GetNextPrime(p)
if(p >= finalnumber):
q = GetNextPrime(q)
p = q
p = GetNextPrime(p)
if(q * p == finalnumber):
gotResult == 1
break
print("q = ", q)
print("\n p = ", p)
time2 = time.clock()
ElapsedTime = time2 - time1
print("Elapsed time: ", ElapsedTime)
def GetNextPrime(prime):
print("in GetNextPrime \n")
isPrime = 0
while(isPrime == 0):
prime = prime + 1
if(IsPrime(prime)== 1):
isPrime = 1
return prime
def IsPrime(prime):
print("in IsPrime \n")
isPrime = 0
i = 2
while(i <= math.sqrt(prime)):
if(i % 2 == 0):
i = i+1
if(prime % i == 0):
isPrime = 1
break
return isPrime
#start of program here
main()
Я написал программу на Python, и я знаю, что она, вероятно, не очень хорошая, потому что я новичок в Python (я программировал на C ++, и я даже не очень хорош в этом)
Но я надеюсь, что вы можете помочь мне найти проблему:)
пс. Каков максимальный размер оригинального номера? Сколько может быть шифров?