
10~50までの素数が格納されている配列を
rubyで作りたいのですが、どのようにすればいいいのかよくわかりません。
下のプログラムにも間違いがあるかもしれませんので
もしありましたご指摘お願い致します。
for i=start i<=end i++;//iは割られる数
for(j=1;j<=i;j++){//jは割る数
if(i%j==0){
count++;
}
}
if(count==2){
System.out.println(i);
}
iをjで割っていき、余りが0になったらカウントを増やしていくプログラムです。
素数は1とその数字でしか割れないので、カウントは2になり、
それを配列に格納したいのですが、ここではただ表示するだけに留まってしまっています。
まだruby初心者で分からないことだらけですので、
簡単な方法ではなく、出来ればfor文を使用したやり方で教えていただけると
幸いです。
よろしくお願い致します。

No.1ベストアンサー
- 回答日時:
java,C言語でおなじみのfor文と全く同じ構文はrubyには有りません。
(そのため、初心者がつまずきやすいのも確かですが)
1から100の繰り返しは
for i in (1..100) do
・・・
end
のようになります。
配列の処理は以下のようにします。(他にもやり方はありますが1つの例です)
配列を格納する変数をhairetuとすると
hairetu = []# 配列の初期化
hairetu << 5# 配列へ追加 hairetu[0] = 5 と同じ
hairetu << 7# 配列へ追加 hairetu[1] = 7 と同じ
上記をふまえて、今回の質問者さんの内容をrubyでかくと以下のようになります
-------------------------------------------------------------
#素数を求めるメソッド(パラメータは開始の数値、終わりの数値)
def sosu(start_i,end_i)
ary = [] #素数を格納する配列を初期化
for i in (start_i..end_i) do
count = 0
for j in (1..i) do
if i%j == 0
count += 1 #rubyはcount++の命令はないのでこの形式になる
end
end
if count == 2
#print "i=",i,"\n" #素数の印字(現在はコメントにしてある)
ary << i #配列にiを加える
end
end
p ary #配列の内容を印刷
end
sosu(10,50)
--------------------------------------------------------------------
実行結果
[11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]
No.2
- 回答日時:
自分の意図にあわなかったからといって、何の説明もなく質問を打ち切るのは、どうかと思いますよ。
> まだruby初心者で分からないことだらけですので、
> 簡単な方法ではなく、出来ればfor文を使用したやり方で教えていただけると幸いです。
Rubyのforは、Javaの for( i: Object) 形式のものにあたり、C等でもおなじみの for(~;~;~)形式のものでも、Basic等のfor ~ to ~ でもありません。
また、Rubyプログラマ達の間では、for i in Obj より Obj.each ~ の方が好まれる傾向にあります。
配列に収めるにしても、空の配列に<<で追加、というのが一般的な方法です。これも、Javaの通常の配列では使わない方法です。(Listではaddを使いますが)
Rubyの勉強がしたいのなら、Rubyの流儀に慣れることも必要です。
それでも、forで、というのなら
まずは、御自身で調べてからにしてください。
forのような基本構文は、入門書でも最初の方にあるはずです。
そのJavaのプログラムの「意味」がわかっているなら、簡単に変換できるはずです。
それでわからない部分はっきりさせた上で集中的に聞かないと、身に付きませんよ。
申し訳ありません。
私の勉強不足でした。
自分で調べたりした後に、もっと理解を深めたうえで
また分からないことがあったら聞こうと思います。
有難うございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- C言語・C++・C# C言語 3 2022/11/09 13:27
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- PHP PHP MySql ページング 2 2022/09/20 06:38
- C言語・C++・C# このプログラミングの問題を教えて欲しいです。 キーボードから整数kを入力し、kが配列aの中に何個存在 2 2022/12/19 22:50
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- Java Java 配列<選挙> 4 2023/07/31 15:07
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) 改行ごとに行を追加し、数量を分割 4 2023/07/11 16:39
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
excelの、ある数式内の{}の意...
-
配列の値を置換するにはどうす...
-
初心者プログラミング
-
エクセル、この関数の意味は?
-
エクセルへのデータの貼付時に...
-
C#の問題です。 文字列型の配列...
-
Excel-vba 文字列と変数を...
-
C言語 exitの使い方
-
VBAでダブルコーテーション入り...
-
フォームを開くときに、コンボ...
-
VBA 1行で複数の代入を行った...
-
Windows11のカメラで動画を撮り...
-
[開通手順]ネットワーク設定が...
-
4択問題のプログラムでランダム...
-
URLが開いた後に処理したい
-
IEEE規格で「いちばん近い偶数...
-
HTML上の2つの連動するプルダウ...
-
[VBS]変数を定数に変換する方法...
-
DWORDって
-
エラーの意味は? Lvalue req...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
配列の値を置換するにはどうす...
-
excelの、ある数式内の{}の意...
-
vbsでテキストファイル内の文字...
-
VBAのWorksheetFunctionの引数...
-
COLUMN(1:1)の意味を教え...
-
数値を浮動小数点32bitHEXコー...
-
VB6で配列を文字列に変換する方...
-
エクセル、この関数の意味は?
-
○桁にある数値を取得する VB.N...
-
VB 配列の内容をファイルに書...
-
VB.NET 2つの配列を連動して並...
-
RichTextBoxの改行を認知してく...
-
copyRecordsetの数値16桁以上に...
-
エクセルへのデータの貼付時に...
-
VBAで配列に文字列が入らない?
-
VBSで特定の文字列が含まれる場...
-
in_addrからchar型の文字列の変換
-
VB.NET 2次元配列
-
配列要素の演算
-
Win32APIでシリアル通信をする...
おすすめ情報