- PR -

引数で整数を渡す(Java)プログラムを作ってます

1
投稿者投稿内容
ヒメ
会議室デビュー日: 2006/11/26
投稿数: 10
投稿日時: 2006-12-04 09:26
こんばんわ。今、Javaの課題をやってるんですが、
・ 引数が1つの場合 → その整数が素数か否か表示
・ 引数が2つの場合 → その間(含、両数)の、素数とその個数を表示
 例) >java kadai 701
>701は素数です
 例) >java kadai 607 618
>607〜618に素数は3個あります:607, 613, 617

という問題で、自分で、プログラムを作ったのですが、うまくできません。

class sosu{
public static void main(String args[]){
int i,j;

for(i = 2; i <= 10000; i++){
for(j = 2; j < i; j++){
if(i % j == 0){
break;
}
if(i == j){
System.out.println("素数は j");
}
}
}
}

というふうにつくったんですけど、アドバイスやこうやったらいいというのがありましたらお願いします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-12-04 09:41
引用:

ヒメさんの書き込み (2006-12-04 09:26) より:

というふうにつくったんですけど、アドバイスやこうやったらいいというのがありましたらお願いします。


アドバイス済みです。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=35287&forum=7

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2006-12-04 10:11
宿題教えてください系の質問には、
「やり方、考え方なら教えるけど、答えは教えない」
というのが基本方針なので考え方だけ。

あなたが書いたソースの手順と意味を考えましょう。

1.2から1万までの繰返し
2.2から1.の数までの繰返し
3.1.の数を2.の数で割ってみて割り切れる答えがあれば合成数、なければ素数

この1の部分の繰返しの開始と終了の数字を、引数によって変えてあげればいいわけですね。

引用:

ヒメさんの書き込み (2006-12-04 09:26) より:
・ 引数が1つの場合 → その整数が素数か否か表示
・ 引数が2つの場合 → その間(含、両数)の、素数とその個数を表示



課題1のほうは

1.引数の数について
2.2から1.の数までの繰返し
3.1.の数を2.の数で割ってみて割り切れる答えがあれば合成数、なければ素数

課題2のほうは

1.引数1から引数2までの繰返し
2.2から1.の数までの繰返し
3.1.の数を2.の数で割ってみて割り切れる答えがあれば合成数、なければ素数
4.素数の場合は個数をカウントするための変数を+1する

あとはうまくやってください。
代わりにそのものずばりのソースコードを書いてくれ、はナシですよ。
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2006-12-04 10:18
あぁ、そうそう。
引数の個数を調べる場合はargs.lengthを利用します。
コード:
System.out.println(args.length);


で挙動をみてみましょう。

長さが1のとき、2のときでif文で分岐させます。
引数を数字に直すにはInteger.parseInt(String)を使います。
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/lang/Integer.html#parseInt(java.lang.String)

いまどきの教育カリキュラムがどうなっているかは知りませんが、
こういう基礎的なところってちゃんと教えてあるんですかね?

アルゴリズムを組む考え方だけで1年分の授業になりそうだし、
言語の仕様を一通りみてまわるだけで別枠で1年分の授業になりそう…。
るぱん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 1370
投稿日時: 2006-12-04 10:43
るぱんです。

コード:

出力用素数配列変数(ArrayList中身はString)を宣言

1.引数が1個の場合
反復(2〜引数の数まで)
もし割り切れる場合
割り切れたフラグを立てる

割り切れたフラグがたっていない場合
出力用素数配列変数に「素数だよ」と詰める

出力用素数配列変数を出力

2.引数が2個の場合
反復(引数1〜引数2まで)
反復(2〜反復の変数まで)
もし割り切れる場合
割り切れたフラグを立てる


割り切れたフラグがたっていない場合
出力用素数配列変数に反復の変数を詰める

出力用素数配列変数を出力

3.引数が(1個もしくは2個)以外の場合
エラーの旨を出力用素数配列変数に詰める

出力用素数配列変数を出力




これでわかる?


[ メッセージ編集済み 編集者: るぱん 編集日時 2006-12-04 16:48 ]
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-12-04 21:55
 こんなことやってると、そのうち誰も相手にしてくれなくなりますよ。
http://www.atmarkit.co.jp/bbs/phpBB/search.php?term=&addterms=any&forum=all&search_user_id=272932&sortby=-1&searchboth=both&submit=Search
自分で調べない(調べたことを書かない)
いろいろ聞いておいて「やっぱりやめました」
返事が付いているのにどうなったか報告しない


まず、引数の数を調べる。
引数が0または3以上なら、使い方を表示して終了。
引数が1または2なら、数字に変換してみる。
 エラーになったら、使い方を表示して終了。
引数が1の時は、ループのはじめの数と終わりの数を、引数と同じにする。
引数が2の時は、大小関係を調べ、小さい方をループのはじめ、大きい方をループの終わりにする。
素数を調べる範囲のループ
 2で割り切れるか、検査する
  割り切れたら素数ではない
  次の数へ
 検査数字のループ(3から始めてステップ2)
  検査数字で割り切れるか、検査する
   割り切れたら素数ではない
   次の数へ
 検査数字のループをブレークしていなければ素数


割って、答えが0になるのは、割られる数が0の時だけです。
剰余を求めるには、剰余演算子を使います。VB では Mod、C 言語系では % です。

[ メッセージ編集済み 編集者: Jitta 編集日時 2006-12-04 21:55 ]
ヒメ
会議室デビュー日: 2006/11/26
投稿数: 10
投稿日時: 2006-12-04 23:02
教えてくださった皆さんどうもありがとうございます。
すごく参考になりました。
今、結果を出して、答えが一致しないところがあるけど、自分でギリギリまで頑張ろうと思います。
報告等しなくてごめんなさい。
るぱん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 1370
投稿日時: 2006-12-05 03:08
引用:

報告等しなくてごめんなさい。



そしたら、リンク先に報告入れようよ。
結局ODP.NETでいけないことが分かりました・・・とかさ、
言われた時だけ書けば良いってモンじゃないと思うよ。

ドンだけ遅れても、報告は入れようよ。
相手してくれた人に失礼です。

それに、ここで、ごめんなさいってしても、こっちで見てるとは限らないよ

[2006-12-5 03:08 am] 報告無しを確認済み

[ メッセージ編集済み 編集者: るぱん 編集日時 2006-12-05 03:08 ]
1

スキルアップ/キャリアアップ(JOB@IT)