Ian_Li 发表于 2023-8-7 19:07:42

欧拉计划 发表于 2023-5-29 02:41
出师不捷啊,第三题就出纰漏了!

确实是漏了大的那个因数没有检测是否为质数,刚开始有鱼油指出时我竟 ...

加上检查大的因子是不是也不对呀?
如果n有两个大于Math.sqrt(n)的质数因子a,b;并且a<b
循环的过程中,会先t = b;
再t = a;
最后返回a

Ian_Li 发表于 2023-8-7 19:09:31

还有最后的代码写的,for循环里的i也没用到呀.
import math

n = 600851475143
k = 2

for i in range(0, math.isqrt(n)):
    if k >= n:
      break
    elif n % k == 0:
      n = n // k
    else:
      k = k + 1
      
print(n)

Ian_Li 发表于 2023-8-7 19:12:16

public static void main(String[] args) {
      long res = getSum(600851475143l);
      System.out.println(res);
    }

    private static long getSum(long n) {
      long k = 2;
      while (k < n) {
            if (n % k == 0) {
                n = n / k;
            } else {
                k++;
            }
      }
      return n;
    }

xw20010211 发表于 2023-8-18 14:33:47

looklook

nkysp 发表于 2023-8-20 11:56:14

风眠 发表于 2023-8-28 12:51:35

速度很慢,求更优解
def chick(x):
    for i in range(2,x):
      if not x%i:
            return False
    else:
      return True


a=600851475143
for i in range(a//2,0,-1):
    if not a%i:
      if chick(i):
            print(i)
            break

name_Liu 发表于 2023-9-21 14:33:16

1

依瓦尼格 发表于 2023-9-25 00:12:43

学习中{:5_110:}

zhangjinxuan 发表于 2023-10-6 08:55:57

欧拉计划 发表于 2023-5-31 01:27
刺激啊,复杂度已经降到 O(√n)

Pollard-Rho 呢{:10_277:}{:10_256:}

左右丶 发表于 2023-10-7 21:55:22

讲得很详细,学到了{:10_282:}

chenxyong 发表于 2023-10-11 15:31:29

打卡打卡

AtoposK 发表于 2023-10-15 01:45:36

学会了

AtoposK 发表于 2023-10-15 01:47:43

讲得很好

141319 发表于 2023-10-17 19:38:08

1

141319 发表于 2023-10-17 19:38:29

1

这是豆豆啊 发表于 2023-11-3 16:28:39

def largest_prime_factor(n):
    i = 2
    while i * i <= n:
      if n % i:
            i += 1
      else:
            n //= i
    return n

number = 600851475143
result = largest_prime_factor(number)

print(result)

居仔爸爸 发表于 2023-11-19 22:09:42

小粪坨屎团团小兔球球

lU553178681 发表于 2023-11-24 14:43:59

学些学习!

sharp46 发表于 2023-11-25 22:09:31

学习学习

奋斗中的鱼 发表于 2023-12-23 17:10:31

{:10_254:}
页: 1 2 [3] 4
查看完整版本: 题目3:找出一个合数的最大质数因子