测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

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 分)

上一题 下一题