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

http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%2097
Problem 97 「大きな非メルセンヌ素数」 †
28433×2^7830457+1の末尾10桁を求めよ。

mod_pow(N,0,_,N):-!.
mod_pow(N,R,M,Result):-
	R mod 2=:=1,
	!,
	N1 is (N*M) mod 10^10,
	R1 is R//2,
 	M1 is (M*M) mod 10^10,
	mod_pow(N1,R1,M1,Result).
mod_pow(N,R,M,Result):-
	M1 is (M*M) mod 10^10,
	R1 is R//2,
 	mod_pow(N,R1,M1,Result).

main:-
	mod_pow(1,7830457,2,R),
	R1 is (R*28433+1) mod 10^10,
 	write(R1).
最終更新:2014年12月27日 07:13