A50041. 设计一个算法, 将一个正整数分解质因数。 程序分析: 对 n 进行分解质因数, 应先找到一个最小的质数 k, 然后按下述步骤完成: (1)如果这个 质数恰等于 n, 则说明分解质因数的过程已经结束, 输出即可。 (2)如果 n>k, 但 n 能被 k 整除, 则应打印出 k 的值, 并用 n 除以 k 的商,作为新的正整n, 重复 执行第一步。 (3)如果 n 不能 被 k 整除, 则用 k+1…
填空题
较难
知识点
题目描述
设计一个算法, 将一个正整数分解质因数。 程序分析: 对 n 进行分解质因数, 应先找到一个最小的质数 k, 然后按下述步骤完成:
(1)如果这个 质数恰等于 n, 则说明分解质因数的过程已经结束, 输出即可。
(2)如果 n>k, 但 n 能被 k 整除, 则应打印出 k 的值, 并用 n 除以 k 的商,作为新的正整n, 重复 执行第一步。
(3)如果 n 不能 被 k 整除, 则用 k+1 作为 k 的值, 重复执行第一步。 根据上述算法思想, 补全下列代码。 输入输出示例: 当 n=105, 输出: 105= 3*5*7
当 n=60, 输出: 60= 2*2*3*5
def fun(n):
print('%d='%n,end=' ')
for i in ①:
while n!=i:
if n <i and ② :
print(i,end='*')
③
else:
④
else:
print(n)
break
if __name__ == "__main__":
while True:
num=input("输入一个正整数:")
if not num.isdigit():
break
fun(int(num))
参考答案
def fun(n):
print('%d='%n,end=' ')
for i in range(2,n+1):
while n!=i:
if n <i and n%i==0:
print(i,end='*')
n=n//i
else:
break
else:
print(n)
break
if __name__ == "__main__":
while True:
num=input("输入一个正整数:")
if not num.isdigit():
break
fun(int(num))答案解析
评分标准:
① range(2,n+1) 或等效答案;(3 分)
② n%i==0 或等效答案;(3 分)
③ n=n//i 或等效答案;(2 分)
④ print(n) 或等效答案;(2 分)
上一题
下一题