求质数 有哪位高手有简单一点的方法谢谢

来源:百度知道 编辑:UC知道 时间:2024/06/17 20:17:31
题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n <> k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。

1、可以用倒推的方法,为了分解n,用循环n/2 ~ 2递减搜索自然数,这样能快一些,简单一些

2、可以用查表的方法,首先录入一个前m位的质数表,然后采用1的方法,在这个表内搜索,这个方法更快更简单

#!/usr/bin/python3
# 这是 python3 程序
def primes(start, stop):
'''生成质数'''
if start > stop:
start, stop = stop, start
if start <= 1:
start = 2
if start == 2:
yield 2
start += 1

while start <= stop:
for i in range(3, int(start**0.5)+1, 2):
if start % i == 0:
break
else:
yield start
start += 2

def 分解质因数(num):
if num < 2:
raise ValueError('需要大于 1 的整数')

factors = []
for i in primes(2, num+1):
while num % i == 0:
num /= i
factors.append(i)
return factors

#include<stdio.h>
void main()
{int i,n;
scanf("%d",&n);
printf("%d=",n);
for(i=2;i<=n;i++)