|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
在写一个程序,目的是当用户输入一个数,就会打印这个数所有的因数,并且想以后把它用tk写成界面程序。
但是中途出了问题,把程序写出来之后运行,系统就卡死了。肯定是某一个死循环的计算量巨大,导致系统崩掉。求高手分析一下,哪里出了问题。- import os
- num = int(input('please enter a number:'))
- factors = []
- num_to_1 = []
- # 判断输入的数是否为质数
- def isPrime(n):
- for i in range(2, n):
- if n % i == 0:
- return False
- return True
- # 把从输入的数到0之间的所有数添加到num_to_1这个列表中
- def interator(n):
- while True:
- num_to_1.append(n)
- n -= 1
- is_prime = isPrime(num)
- interator(num)
- # 如果是指数,打印这是个质数
- if is_prime:
- print('This is a prime number!')
- # 反之,则把列表里的数迭代出来,判断余数是否为0,
- # 如果是就把它放到factors这个列表中,再打印出来
- else:
- for i in num_to_1:
- while True:
- if num % i == 0:
- factors.append(i)
- print(factors)
- os.system('pause')
复制代码
本帖最后由 新手·ing 于 2017-9-17 08:39 编辑
- def divisors(n):
- return [i for i in range(2, n) if not n % i] or '%d is prime' % n
复制代码
- import os
- num = int(input('please enter a number:'))
- factors = []
- num_to_1 = []
- # 判断输入的数是否为质数
- def isPrime(n):
- for i in range(2, n):
- if n % i == 0:
- return False
- return True
- # 把从输入的数到0之间的所有数添加到num_to_1这个列表中
- def interator(n):
- while n:
- num_to_1.append(n)
- n -= 1
- is_prime = isPrime(num)
- interator(num)
- # 如果是指数,打印这是个质数
- if is_prime:
- print('This is a prime number!')
- # 反之,则把列表里的数迭代出来,判断余数是否为0,
- # 如果是就把它放到factors这个列表中,再打印出来
- else:
- for i in num_to_1:
- if num % i == 0:
- factors.append(i)
- print(factors)
- os.system('pause')
复制代码
|
|