このディレクトリの索引

#  [1] 授業単元:プログラミング 
#  [2] 問題文 
#  ・1から100までの数をプリントするプログラムを書け。ただしフェルマー素数のときは 
#  数の代わりに「Fizz」と、オイラー素数のときは「Buzz」とプリントし、フェルマー素数とオイラー素数両方の倍数の場合には「FizzBuzz」とプリントすること。
#  

'1から100までの数をプリントするプログラムを書け。ただしフェルマー素数のときは数の代わりに「Fizz」と、オイラー素数のときは「Buzz」とプリントし、フェルマー素数とオイラー素数両方の倍数の場合には「FizzBuzz」とプリントすること。' :-
        '1から100までの範囲のフェルマー素数とオイラー素数を得る'(_フェルマー素数ならび,_オイラー素数ならび),
        '1から100までの範囲のフェルマー素数とオイラー素数両方の倍数を得る'(_フェルマー素数ならび,_オイラー素数ならび,_フェルマー素数とオイラー素数両方の倍数ならび),
        '1から100までの数をプリントする。ただしフェルマー素数のときは数の代わりに「Fizz」と、オイラー素数のときは「Buzz」とプリントし、フェルマー素数とオイラー素数両方の倍数の場合には「FizzBuzz」とプリントすること。'(_フェルマー素数ならび,_オイラー素数ならび,_フェルマー素数とオイラー素数両方の倍数ならび,_n),
        write(' '),
        _n = 100.

'1から100までの範囲のフェルマー素数とオイラー素数を得る'(_フェルマー素数ならび,_オイラー素数ならび) :-
        '1から100までの範囲のフェルマー素数を得る'(_フェルマー素数ならび),
        '1から100までの範囲のオイラー素数を得る'(_オイラー素数ならび).

'1から100までの範囲のフェルマー素数を得る'(_フェルマー素数ならび) :-
        findall(_n,(
                    between(1,100,_n),
                    フェルマー素数(_n)),
                _フェルマー素数ならび).

'1から100までの範囲のオイラー素数を得る'(_オイラー素数ならび) :-
        findall(_n,(
                    between(1,100,_n),
                    オイラー素数(_n)),
                _オイラー素数ならび).

'1から100までの範囲のフェルマー素数とオイラー素数両方の倍数を得る'(_フェルマー素数ならび,_オイラー素数ならび,_フェルマー素数とオイラー素数両方の倍数ならび) :-
        findall(_n,(
                    between(1,100,_n),
                    フェルマー素数とオイラー素数両方の倍数(_n,_フェルマー素数ならび,_オイラー素数ならび)),
                _フェルマー素数とオイラー素数両方の倍数ならび).

フェルマー素数とオイラー素数両方の倍数(_n,_フェルマー素数ならび,_オイラー素数ならび) :-
        member(_フェルマー素数,_フェルマー素数ならび),
        member(_オイラー素数,_オイラー素数ならび),
        0 is _n mod _フェルマー素数,
        0 is _n mod _オイラー素数,!.

'1から100までの数をプリントする。ただしフェルマー素数のときは数の代わりに「Fizz」と、オイラー素数のときは「Buzz」とプリントし、フェルマー素数とオイラー素数両方の倍数の場合には「FizzBuzz」とプリントすること。'(_フェルマー素数ならび,_オイラー素数ならび,_フェルマー素数とオイラー素数両方の倍数ならび,_n) :-
        '1から100までの'(_n),
        '数をプリントする。ただしフェルマー素数のときは数の代わりに「Fizz」と、オイラー素数のときは「Buzz」とプリントし、フェルマー素数とオイラー素数両方の倍数の場合には「FizzBuzz」とプリントすること。'(_n,_フェルマー素数ならび,_オイラー素数ならび,_フェルマー素数とオイラー素数両方の倍数ならび).

'1から100までの'(_n) :-
        between(1,100,_n).

'数をプリントする。ただしフェルマー素数のときは数の代わりに「Fizz」と、オイラー素数のときは「Buzz」とプリントし、フェルマー素数とオイラー素数両方の倍数の場合には「FizzBuzz」とプリントすること。'(_n,_,_,_フェルマー素数とオイラー素数両方の倍数ならび) :-
        'フェルマー素数とオイラー素数両方の倍数の場合には「FizzBuzz」と'(_n,_フェルマー素数とオイラー素数両方の倍数ならび),!.
'数をプリントする。ただしフェルマー素数のときは数の代わりに「Fizz」と、オイラー素数のときは「Buzz」とプリントし、フェルマー素数とオイラー素数両方の倍数の場合には「FizzBuzz」とプリントすること。'(_n,_フェルマー素数ならび,_,_) :-
        'フェルマー素数のときは数の代わりに「Fizz」と'(_n,_フェルマー素数ならび),!.
'数をプリントする。ただしフェルマー素数のときは数の代わりに「Fizz」と、オイラー素数のときは「Buzz」とプリントし、フェルマー素数とオイラー素数両方の倍数の場合には「FizzBuzz」とプリントすること。'(_n,_,_オイラー素数ならび,_) :-
        'オイラー素数のときは「Buzz」と'(_n,_オイラー素数ならび),!.
'数をプリントする。ただしフェルマー素数のときは数の代わりに「Fizz」と、オイラー素数のときは「Buzz」とプリントし、フェルマー素数とオイラー素数両方の倍数の場合には「FizzBuzz」とプリントすること。'(_n,_,_,_) :-
        writef('%t',[_n]).

'フェルマー素数とオイラー素数両方の倍数の場合には「FizzBuzz」と'(_n,_フェルマー素数とオイラー素数両方の倍数ならび) :-
        member(_n,_フェルマー素数とオイラー素数両方の倍数ならび),
        write('FizzBuzz'),!.

'フェルマー素数のときは数の代わりに「Fizz」と'(_n,_フェルマー素数ならび) :-
        member(_n,_フェルマー素数ならび),
        write('Fizz').

'オイラー素数のときは「Buzz」と'(_n,_オイラー素数ならび) :-
        member(_n,_オイラー素数ならび),
        write('Buzz').

オイラー素数(_オイラー素数) :-
        between(0,39,_n),
        _オイラー素数 is _n * _n + _n + 41.

フェルマー素数(_フェルマー素数) :-
        between(0,4,_n),
        _フェルマー素数 is truncate(2 ^ (2 ^ _n) + 1).