プロジェクトオイラー問3

「プロジェクトオイラー問3」の編集履歴(バックアップ)一覧はこちら

プロジェクトオイラー問3」(2018/04/18 (水) 05:41:29) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%203 Problem 3 「最大の素因数」 † 13195 の素因数は 5, 7, 13, 29 である. 600851475143 の素因数のうち最大のものを求めよ. Haskell解 import System.IO main = do putStrLn $ show test test::Int test=maximum $ filter ((==0) . ( 600851475143 `mod`)) $ fmap fst $ takeWhile ((<=600851475143) .snd) [(a,a*a)|a<-[2..], isPrime a] isPrime :: Int -> Bool isPrime 2 = True isPrime n | n < 2 = False | (n `mod` 2) == 0 = False | otherwise = wari 3 n wari :: Int -> Int -> Bool wari i n = if i * i <= n then (if n `mod` i == 0 then False else wari (i + 2) n) else True Prolog解 divs(N,Div,N):- (N mod Div)>0, !. divs(N ,Div,Result):- N1 is N//Div, divs(N1,Div,Result). search(1,Div):- !, Div1 is Div-1, write(Div1). search(N,Div):- N=<Div*Div, !, write(N). search(N,Div):- divs(N,Div,N1), Div1 is Div+1, search(N1,Div1). main:-search(600851475143,2).
http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%203 Problem 3 「最大の素因数」 † 13195 の素因数は 5, 7, 13, 29 である. 600851475143 の素因数のうち最大のものを求めよ. ==0は式の一部でなく関数だというのではまりました。 x `mod` 7 == 0 と書きたくなるのが罠。 Haskell解 import System.IO main = do putStrLn $ show test test::Int test=maximum $ filter ((==0) . ( 600851475143 `mod`)) $ fmap fst $ takeWhile ((<=600851475143) .snd) [(a,a*a)|a<-[2..], isPrime a] isPrime :: Int -> Bool isPrime 2 = True isPrime n | n < 2 = False | (n `mod` 2) == 0 = False | otherwise = wari 3 n wari :: Int -> Int -> Bool wari i n = if i * i <= n then (if n `mod` i == 0 then False else wari (i + 2) n) else True Prolog解 divs(N,Div,N):- (N mod Div)>0, !. divs(N ,Div,Result):- N1 is N//Div, divs(N1,Div,Result). search(1,Div):- !, Div1 is Div-1, write(Div1). search(N,Div):- N=<Div*Div, !, write(N). search(N,Div):- divs(N,Div,N1), Div1 is Div+1, search(N1,Div1). main:-search(600851475143,2).

表示オプション

横に並べて表示:
変化行の前後のみ表示: