簡単にできるけど単純過ぎて少し遅いかな。import std.stdio : readln,writef; import std.conv : to; import std.string : chomp; void main () { long integer = to!(long)(chomp(readln())); foreach (long i; [2,3,5,7]) if (integer >= i) writef("%d ",i); for (long i = 11; i <= integer; i++) if (isprime(i)) writef("%d ",i); } bool isprime (long i) { return i % 2 && i % 3 && i % 5 && i % 7; }
isprimeだけ使うと 2,3,5,7 が素数として判定されないので注意。
入力された数値以上の数値扱わないのがこの方法の良いところ。
誰でも思いつく方法とは思いますが、素数の判定方法自体わからない・忘れた方は試してみてください。ある意味素数の Hello World です。
DMD 2.051 がリリースされているようです。 Bugs Fixed 多いな・・・。
0 件のコメント:
コメントを投稿