解题思路:
这道题的意思也就是让你分解n的素因子乘积,然后去掉重复的素因子,将剩下的素因子相乘得到p
例如1000 = 2*2*2*5*5*5
那么去重之后的素因子为2和5,则p= 2*5 = 10
注意事项:
①当n是素数时,p = n
②不要开始就生成[2,n//2]之间的所有素数,然后从里面挑n的素因子,这样大概率超时,因为数据n的值比较大。
参考代码:
from math import sqrt def Isprime(x): for i in range(2,int(sqrt(x))+1): if x % i == 0: return False return True def f(n): if Isprime(n): print(n) else: i = 2 p = 1 while (n != 1): if n % i == 0 and Isprime(i): p = p * i while (n % i == 0): n = n // i i = i + 1 print(p) if __name__ == '__main__': n = int(input()) f(n)
0.0分
0 人评分
C语言程序设计教程(第三版)课后习题7.3 (C语言代码)浏览:1215 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:606 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:593 |
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:648 |
C语言训练-自守数问题 (C语言代码)浏览:798 |
C语言训练-8除不尽的数 (C语言代码)浏览:1469 |
多输入输出练习2 (C语言代码)浏览:1710 |
C语言训练-字符串正反连接 (C语言代码)浏览:653 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:587 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:469 |