このディレクトリの索引

http://sum2cha.blogpico.com/archives/2017 レス番号297 
# 3より大きく、入力された上限の数未満の全ての自然数かつ非素数について、 
# 3で割り切れるものは無視し、3で割った余りが1のものは加算し、 
# 余りが2のものは減算して合計を求めよ 

'3より大きく、入力された上限の数未満の全ての自然数かつ非素数について、3で割り切れるものは無視し、3で割った余りが1のものは加算し、余りが2のものは減算して合計を求める'(_上限値,_合計) :-
    t2_101(4,_上限値,_合計).

t2_101(N,_上限値,0) :- N >= _上限値,!.
t2_101(N,_上限値,_合計) :-
    \+(素数である(N)),
    2 N mod 3,
    N2 is N + 1,
    t2_101(N2,_上限値,_合計2),
    _合計 is _合計2 - N.
t2_101(N,_上限値,_合計) :-
    \+(素数である(N)),
    1 N mod 3,
    N2 is N + 1,
    t2_101(N2,_上限値,_合計2),
    _合計 is _合計2 + N.
t2_101(N,_上限値,_合計) :-
    N2 is N + 1,
    t2_101(N2,_上限値,_合計).

素数である(N) :- N2 is N // 2,for(2,M,N2),0 is N mod M,!,fail.
素数である(_).