人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

1?100までの間の素数を出力するプログラムをJavaScriptで作るにはどうすればよいのですか。
課題で出たのですが、模範的な解答例を確認しておきたいです。
よろしくお願いします。

●質問者: 匿名質問者
●カテゴリ:コンピュータ ウェブ制作
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

質問者から

2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97・・・といった感じです。よろしくお願いします。


1 ● 匿名回答2号

http://shimax.cocolog-nifty.com/search/2008/08/javascript_d99c.html
参考にしてください。


匿名質問者さんのコメント
ありがとうございます。解説もついているのでこれで出力する仕組みを理解してみようと思います。

2 ● 匿名回答3号
ベストアンサー

こうですかね!

var PrimeFilter = function() {};
PrimeFilter.prototype.filter = function(checkNum){
if (checkNum == 1) { return false; }

for(var i=2; i<checkNum; i++) {
if (checkNum % i == 0) { return false; }
}
return true;
};

var ConsoleWriter = function() {};
ConsoleWriter.prototype.write = function(s){
console.log(s);
};

var NumRange = function(){ this.init.apply(this, arguments); }
NumRange.prototype.init = function(start, end, filterObject) {
this.list = [];
for (var i=start; i<=end; i++) { this.list.push(i); }
this.list = this.list.filter(filterObject.filter);
};
NumRange.prototype.write = function(writer) {
this.list.forEach(function(i){
writer.write(i);
});
};

var Application = function() {};
Application.prototype.run = function(){
var primeRange = new NumRange(1, 100, new PrimeFilter());
primeRange.write(new ConsoleWriter());
};

var app = new Application();
app.run();


まあ、拡張性とか考えることは求められていないだろうから、想定される模範解答はおそらくこうなんですけどね。

function checkPrime(checkNum) {
if (checkNum == 1) { return false; }

for(var i=2; i<checkNum; i++) {
if (checkNum % i == 0) { return false; }
}
return true;
};

for (var i=1; i<100; i++) {
if (checkPrime(i)) { console.log(i); }
}

匿名質問者さんのコメント
おそらくconsole.logで確認するまでで問題無いとは思いますが、上記の解答例も個人的なスキルアップのために参考にさせていただきます。ありがとうございます。

3 ● 匿名回答4号

こんな感じ

素数判定の処理を,再帰アルゴリズムで1文で書いたJavaScriptプログラムは
http://d.hatena.ne.jp/TipsMemo+computer-technology/20140429/p1


匿名質問者さんのコメント
いろいろやり方がありますね。こちらも勉強になりますね。合わせて参考にさせていただいきます。ありがとうございます。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ