酷代码 AI
菜单
全部AI  /  热门  /  AI写代码神器
服务商

7-1 一行读入一个正整数n(n>1),如果它是素数,则另一行给出是素数的信息,否则另一行输出它的质因子乘积的表达式,且要求打印的质因子从小到大(1不是质因子) 分数 10 作者 zju-mbq 单位 浙江大学 一行读入一个正整数n(n>1),如果它是素数,则另一行给出是素数的信息,否则另一行输出它的质因子乘积的表达式,且要求打印的质因子从小到大(1不是质因子) 输入格式: 一行中输入2 输出格式: 2是素数 输入样例: 在这里给出一组输入。例如: 100 输出样例: 在这里给出相应的输出。例如: 100=2*2*5*5

```python def is_prime(num): # 判断是否为素数 if num <= 1: return False for i in range(2, int(num0.5) + 1): if num % i == 0: return False return True def prime_factors(num): # 获取所有质因子 factors = [] i = 2 while i * i <= num: if num % i: i += 1 else: num //= i factors.append(i) if num > 1: factors.append(num) return factors def main(): n = int(input()) if is_prime(n): print(f"{n}是素数") else: factors = prime_factors(n) factor_str = " * ".join(map(str, factors)) print(f"{n}={factor_str}") main() ``` 需要注意的逻辑点: 1. 判断素数时,只需要检查到 `sqrt(n)` 即可,因为如果 `n` 有大于 `sqrt(n)` 的因数,那么它一定有一个小于 `sqrt(n)` 的因数。 2. 获取质因子时,每次找到一个质因子后,都要将 `num` 除以该质因子,直到 `num` 不能被该质因子整除为止。 3. 最终输出的质因子列表中,每个质因子都是从小到大排列的,确保输出格式正确。 [2024-12-11 10:14:52 | AI写代码神器 | 320点数解答]

相关提问