'''
脚本作用:在一定范围内,选择出每个素数的最大素因子,并取所有素因子的最大值
返回这个素数
模块划分:数据准备、数据测试
思想:最大值中的最大值,核心:打表思想,先做出一部分内容,后面直接拿来用
'''
#数据准备:范围较大,先确定有那些素数
N=2001
prime=[1]*N #先把所有元素置1 ---假定每个元素是素数
#求得1-20000范围内那些是素数
def setPrime():
#0 1 是非素数
prime[0]=0
prime[1]=0
for i in range(2,int(N**0.5)):
if(prime[i]):
j=2*i
while(j<N):
prime[j]=0#倍数不是素数
j+=i#数据加倍
#求每个素数的最大素因子
maxPrime=[None]*N
def getMaxPrime():
maxPrime[0]=0
maxPrime[1]=0
for i in range(2,N):
for j in range(i,1,-1):#一直除下去 一定是1,不是2 范围不要弄错
if(prime[j] and i%j==0):#是素数,并且能整除,就是最大素因子
maxPrime[i]=j
break
'''
测试模块
'''
def testPrime():
#获取素数
setPrime()
#获取每个素数的最大素因子
getMaxPrime()
#用户输入数据
print("请输入一组数据:")
n=input().split()
temp=[]#用来存放,输入数据的最大素因子
for i in range(len(n)):
temp.append(maxPrime[int(n[i])])
#temp[]中的最大值对应的prime[i](此处用变量res存)即是题解
res=None
maxValue=-1
for i in range(len(n)):
if(temp[i]>maxValue):
maxValue=temp[i]
res=int(n[i])
#输出结果
print("输入数据中,拥有最大素因子的素数是:",res)
testPrime()
座右铭:站在别人的思想上,看见自己的不足,传播错误的经验,愿君不重蹈覆辙。
由于受限于本人经验,难免不足,如有建议,欢迎留言交流。