编写函数实现,判断一个数是否为素数,如果不是,输出它的因子,如:90=2*3*3*5
时间: 2024-12-01 22:30:03 浏览: 29
编写一个函数来判断一个数是否为素数并输出其因子可以按以下步骤完成:
首先,我们需要定义一个辅助函数来检查两个数是否互质(即它们的最大公约数为1),然后我们再主函数中遍历从2到该数平方根的整数,看是否存在能整除该数的因子。
```python
def is_prime(n):
if n <= 1:
return False, []
# 辅助函数,计算最大公约数
def gcd(a, b):
while b != 0:
a, b = b, a % b
return a
factors = [] # 存储因子列表
for i in range(2, int(n**0.5) + 1): # 只需检查到√n即可
if n % i == 0: # 如果找到因子
factors.append(i)
if gcd(n, i) == i: # 检查是否互质
factors.append(n // i)
break # 找到因子就退出循环
# 判断是否为素数
if len(factors) > 1:
print(f"{n}={factors[0]}*{factors[1]}") # 输出因子表达式
return False, factors
else:
return True, []
# 测试函数
number = 90
prime_status, factors_list = is_prime(number)
if not prime_status:
print(f"Number {number} is not prime. Factors are:", factors_list)
```
当你运行这个函数,比如传入数字90,它会输出90的因子及其不是素数的信息。如果你需要的是其他数值的判断,只需将`number`变量改为相应值即可。
阅读全文