|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #将一个正整数分解质因数。例如:输入13195,打印13195 = 5*7*13*29
- # 输入90,打印出90=2*3*3*5
- #思路:首先用number对从2开始的质数取余,如果余数为0,表示能被该质数整除,然后再用该数除以该素数,取其除数
- #将除数赋值给number,又再次对此数从质数3开始取余,判断是否能被整除,反复重复上述的步骤,直到所存储的因子乘机 == 输入值
- #此时的质数为输入的初始number的最大质数因子
- import math
- num = int(input("enter the number:"))
- factor = []
- my_num = 1 #存放所求得质数因子乘积值
- number = num
- i = 2
- while my_num != number:
- #判断i是不是质数
- for j in range(2,int(math.sqrt(i))+1):
- if (i % j) == 0:
- break #不是质数,结束循环
- elif j == int(math.sqrt(i)): #判断是否执行到了最后
- #在i是质数的前提下
- if number % i == 0 :
- shang = number // i #取商
- factor.append(i)
- my_num = my_num * i
- if my_num == number:
- print(factor)
- else:
- number = shang
-
- i = i + 1
-
-
复制代码
这个能行,其实看别人程序蛮累的:
- num = int(input("enter the number:"))
- def prime_f(num):
- f = 2
- factor = []
- while f<int(math.sqrt(num)):
- while num % f == 0:
- factor.append(f)
- num //= f
- f += 1
- factor.append(num)
- return factor
- print(prime_f(num))
复制代码
结果:
- enter the number:33552
- [2, 2, 2, 2, 3, 3, 233]
复制代码
|
|