このディレクトリの索引 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. 素数である(_).