0
1

[Python][Julia]Project euler3 (プロジェクトオイラー3)

Last updated at Posted at 2023-12-28

Project euler Ploblem 3 (プロジェクトオイラー3)

Largest Prime Factor

備忘のために残しておく。

2023/12/29 コメントで指摘の通り、誤ったコードを書いていたので修正しました。
(コメントありがとうございます)

問題文

13195の素因数は5,7,13,29である。
600851475143の最大の素因数は?

(原文)
The prime factors of 13195 are 5,7,13 and 29.
What is the largest prime factor of the number 600851475143?

解答

答え

6857

解答の方針

求める値の平方数までの素因数を前から順にリストに追加する。
例えば、12の場合だと[3,2]、25の場合だと[5]。
今回の場合は、[6857, 1471, 839, 71]
リストの一番前が、最大の素因数となる。
素数の判定アルゴリズムに「エラトステネスの篩」があるが、今回は使用しなかった
参考:エラトステネスの篩

Pythonのコード

Python(Ploblem3)
def largest_prime_factor(num: int) -> int:
    divisor =[]
    temp = num
    for i in range(2, int(num**0.5) + 1):
        if temp % i == 0:
            while temp % i == 0:
                temp //= i
            divisor.insert(0,i)
    if temp != 1:
        divisor.insert(0,temp)
    if divisor == []:
        divisor.insert(0,temp)
    return divisor[0]

num = 600851475143
print(largest_prime_factor(num))

Juliaのコード

Julia(Ploblem3)
function largest_prime_factor(num::Int64)::Int64
    temp = num
    divisor = []
    for i in 2:ceil(num^0.5)
        if temp % i == 0
            while temp % i == 0
                temp ÷= i
            end
            insert!(divisor, 1, i)
        end
    end
    if temp != 1
        insert!(divisor, 1, temp)
    end
    if divisor == []
        insert!(divisor, 1, temp)
    end
    return divisor[1]
end
num = 600851475143
println(largest_prime_factor(num))
0
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1