Problem 7 「10001番目の素数」 †
素数を小さい方から6つ並べると 2, 3, 5, 7, 11, 13 であり, 6番目の素数は 13 である.
10 001 番目の素数を求めよ.
http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%207
解法
Prolog言語
not_prime(N):-N<2,!.
not_prime(N):-
between(2,N,D),
(N<D*D->!,fail;true),
N mod D=:=0,
!.
is_prime(N):-not(not_prime(N)).
prime_count(N,Count,N1,Count1):-
is_prime(N),
!,
N1 is N+1+(N mod 2),
Count1 is Count+1.
prime_count(N,Count,N1,Count):-
N1 is N+1+(N mod 2).
search(N,10001):-!,
N1 is N-2,
write(N1).
search(N,Count):-
!,
prime_count(N,Count,N1,Count1),
search(N1,Count1).
main7:-
search(2,0).
0 件のコメント:
コメントを投稿