首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在给定的数目中优化最大素因子?

如何在给定的数目中优化最大素因子?
EN

Stack Overflow用户
提问于 2020-08-09 16:14:00
回答 2查看 51关注 0票数 0

约束

1<=T<=10

10<=N<=10^2

输入

2

10

17

输出

5

17

这是我的代码

代码语言:javascript
复制
n=int(input())
for f in range(n):
    b=[]
    a=int(input())
    for i in range(1,a+1):
        if i>1:
            for j in range(2,i):
                if (i%j)==0:
                    break
            else:
                if a%i==0:

                     b.append(i)
    print(max(b))

解释

10是{2,5},所以回答5

17本身就是17。

EN

回答 2

Stack Overflow用户

发布于 2020-08-09 16:53:48

在约束条件中,如果T表示最多有10个测试用例,而N表示给定数目的范围在10到100之间,

最优化的方法之一是在代码中创建一个初始化列表,并为每次读取的输入打印预先计算的答案。:)

代码语言:javascript
复制
answer = [0, 1, 2, 3, 2, 5, 3, 7, 2, 3,
      5, 11, 3, 13, 7, 5, 2, 17, 3, 19,
      5, 7, 11, 23, 3, 5, 13, 3, 7, 29,
      5, 31, 2, 11, 17, 7, 3, 37, 19, 13,
      5, 41, 7, 43, 11, 5, 23, 47, 3, 7,
      5, 17, 13, 53, 3, 11, 7, 19, 29, 59,
      5, 61, 31, 7, 2, 13, 11, 67, 17, 23,
      7, 71, 3, 73, 37, 5, 19, 11, 13, 79,
      5, 3, 41, 83, 7, 17, 43, 29, 11, 89,
      5, 13, 23, 31, 47, 19, 3, 97, 7, 11, 5]
票数 1
EN

Stack Overflow用户

发布于 2020-08-09 23:35:45

创建一个在100下面的素数列表。

对每个“i”只从'a‘到'a/2-1’运行一个循环,检查'i‘是否完全分隔'a’,是否存在于‘素数’中。

代码语言:javascript
复制
primes = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]

n=int(input())
for f in range(n):
    a=int(input())
    for i in range(a,int(a/2-1),-1):
        if(a%i==0 and i in primes):
          print(i)
          break

如果不想手动创建素数列表,可以首先使用它通过for循环创建素数列表:

代码语言:javascript
复制
import math

def isPrime(n): 
      
    if (n <= 1): 
        return False
    
    #check from sqrt(n) to 2
    for i in range(int(math.sqrt(n)),1,-1): 
        if (n % i == 0): 
            return False
  
    return True

primes = []
for i in range(100):
  if(isPrime(i)):
    primes.append(i)

n=int(input())
for f in range(n):
    a=int(input())
    for i in range(a,int(a/2-1),-1):
        if(a%i==0 and i in primes):
          print(i)
          break
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63328635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档