Python_拥有最大素因子的素数_路漫漫远俢兮

'''
   脚本作用:在一定范围内,选择出每个素数的最大素因子,并取所有素因子的最大值
   返回这个素数
   模块划分:数据准备、数据测试

   思想:最大值中的最大值,核心:打表思想,先做出一部分内容,后面直接拿来用

'''

#数据准备:范围较大,先确定有那些素数
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()

 

 

座右铭:站在别人的思想上,看见自己的不足,传播错误的经验,愿君不重蹈覆辙。

 

由于受限于本人经验,难免不足,如有建议,欢迎留言交流。

 

说明:如果喜欢,请点赞,您的鼓励是本人前进最好的动力

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值