javaのプログラミングについて教えていただきたいです。
javaの授業で課題が出されて作っていますが、うまくできないです。課題の内容はn(整数)の素数判定についてです。for文やwhile文を使うことと、コマンドから入力することが条件です。
私が作ったのは、
class sample{
public static void main(String args[]){
int n;
String message1=args[0];
n=Integer.parseInt(message1);
int i;
if(n<=2){
System.out.println(n+"は素数ではありません。");
}
if(n==2){
System.out.println(n+"は素数です。");
}
for(i=2;i<=n-1;i++){
if((n%i)==0){
System.out.println(n+"は素数ではありません。");
break;
}else{
System.out.println(n+"は素数です。");
break;
}
}
}
}
全然わからないので、たぶんたくさん間違えていると思いますが、どのように直したら良いのでしょうか?
教えてください、よろしくお願いします。
No.2
- 回答日時:
2は素数なので、
if(n<=2){
ではなく
if(n<2){
です。
for(i=2;i<=n-1;i++){
は
素数かどうかは、対象数値の平方根の整数値まで検証したら分かります。
Math.floor()
Math.sqrt()
を使いましょう。
class Sample{
public static void main(String args[]){
int n;
n = Integer.parseInt(args[0]);
if(n < 2){
System.out.println(n + "は素数ではありません。");
return;
}
// 対象数値の平方根までの整数で割り切れる数値は素数でない
int calcLimit = (int)Math.floor(Math.sqrt(n));
for (int i = 2; i <= calcLimit; i++) {
if (n % i == 0) {
System.out.println(n + "は素数ではありません。");
return;
}
}
System.out.println(n + "は素数です。");
}
}
回答ありがとうございます!返信遅れてすみません。
教えていただきありがとうございます。しかし、Math.floor()などは一切習ってないので使えないです。
No.1
- 回答日時:
Javaはよく分かっていませんが…。
>うまくできないです
まず、なにがうまくできないのか。というのは説明できますかね?
まぁ、おそらくループが回らないとは思いますけど。
ループ1回目、iが2なので…
>if((n%i)==0){
> System.out.println(n+"は素数ではありません。");
> break;
nが偶数だったら、素数ではない。と表示して抜ける。
# まぁ、素数ではないのが確定したなら以降のチェックは不要にでいいでしょう。
では、奇数だった場合は?
>}else{
> System.out.println(n+"は素数です。");
> break;
素数です。
と、表示してループを抜けます。
iが3以降だった場合のチェックは実行しません。
ということで、9は素数として表示します。
奇数は全て素数として返しますね。
回答ありがとうございます!返信遅くなってすみません。
偶数は抜けるけれど、奇数は抜けられないのはなんとなくわかったのですが、どういう風に直したらいいのかわかりません。教えてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- Ruby vscode 文字化け 1 2022/05/21 19:17
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- Java Java 配列<選挙> 4 2023/07/31 15:07
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「黒歴史」教えて下さい
- ・2024年においていきたいもの
- ・我が家のお雑煮スタイル、教えて下さい
- ・店員も客も斜め上を行くデパートの福袋
- ・食べられるかと思ったけど…ダメでした
- ・【大喜利】【投稿~12/28】こんなおせち料理は嫌だ
- ・前回の年越しの瞬間、何してた?
- ・【お題】マッチョ習字
- ・モテ期を経験した方いらっしゃいますか?
- ・一番最初にネットにつないだのはいつ?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・2024年に成し遂げたこと
- ・3分あったら何をしますか?
- ・何歳が一番楽しかった?
- ・治せない「クセ」を教えてください
- ・【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・集合写真、どこに映る?
- ・自分の通っていた小学校のあるある
- ・フォントについて教えてください!
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ループ処理の際、最後だけ","を...
-
java キーボード入力された値の...
-
Java、2の0乗~10乗の表示
-
javaが上手くいきません
-
Java 入力した整数値の合計を、...
-
入力データ数を入力して、その...
-
繰り返しによる星印の出力
-
論理演算子”||”またはの入力方法
-
数値⇒漢数字変換 java
-
パソコンキーボードで時分秒を...
-
VBAで配列の計算
-
式の型は配列型で int に解決済...
-
wsprintf関数の使い方について
-
Visual Basic でのコードをASCI...
-
flush()とclose()について
-
Javaで改行などが出来ないのです。
-
動的配列が存在(要素が有る)か...
-
SwingでJtableのヘッダ行が表示...
-
jspでの二次元配列
-
Path型をString型へ変換する(Java)
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ループ処理の際、最後だけ","を...
-
javaが上手くいきません
-
続・ZZZ,ZZZ,ZZ9形式の金額形式...
-
java キーボード入力された値の...
-
論理演算子”||”またはの入力方法
-
7つ数字を表示したら改行すると...
-
数値⇒漢数字変換 java
-
JAVAのfor文で困っています。
-
Randomメソッドの確率設定
-
テキストボックスに入力された...
-
キーボードから10人分の点数を...
-
2次元配列の並び替え
-
countに実行した回数をいれたい...
-
総称型ArrayList<E>への参照...
-
エラー(互換性の無い型)
-
Java、2の0乗~10乗の表示
-
javaのプログラミングについて...
-
Java キーボードから負の数が入...
-
javaです。 途中まで出来ている...
-
2つのスクロールバーを連動させ...
おすすめ情報