質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

7回答

1536閲覧

素数(Java)の求め方について

michael35

総合スコア11

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2018/10/25 23:32

素数の計算について
下記の通りに書けば、2〜500の間にある素数が出ることは分かっています。
ただ、問題は、この下に、例えば、桁に関係なく3が表示される素数は除くようにするには、
どのようなコードを書けば良いのかが分かりません。

どこに何を付け加えれば良いのかアドバイスをお願いします。

class sosu
{
public static void main (String[] args)
{
int i =0;
int num =0;
String sosu = "";

for (i = 2; i <= 500; i++) { int counter=0; for(num =i; num>=1; num--) { if(i%num==0) { counter = counter + 1; } } if (counter ==2) { sosu = sosu + i + " "; } } System.out.println(sosu);

}
}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

swordone

2018/10/26 02:51

「素数の求め方」が質問ではないですよねこれ
guest

回答7

0

素数を集めてから3が含まれているものを取り除くのでもよいのですが、最初の 2~500 のforループの最初にて、3が入るものを取り除いておく方が、処理の効率は良いでしょう。

java

1for (int i=2;i<=500;i++) { 2 if (Integer.toString(i).contains("3")) { 3 continue; 4 }

投稿2018/10/26 03:36

A-pZ

総合スコア12011

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Udomomo

2018/10/26 03:56

確かにこれをあらかじめやっておくと、素数判定の回数自体を減らせますね。
guest

0

ベストアンサー

桁に関係なく除きたいのであれば、素数を文字列にした後に、その中に3が含まれているか調べるのが早そうです。
sosu.contains("3")などでできないでしょうか。

投稿2018/10/25 23:40

Udomomo

総合スコア1524

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

michael35

2018/10/25 23:50

どのあたりにそのコードを追加すれば良いですか?
Udomomo

2018/10/26 01:09

この方法でやるなら、文字列のsosuを得た直後ですね。なお返り値はbooleanなので、返り値に応じて条件分岐させてください。
guest

0

Javaなど不要。そう、シェル芸ならね!

bash

1$ seq 2 500|factor|awk '$0*=!$3'|grep -v 3

投稿2018/10/26 22:27

hichon

総合スコア5737

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

java

1 if (counter == 2) { 2 String s = "" + i; 3 if (s.indexOf("3") < 0) { 4 sosu = sosu + i + " "; 5 } 6 }

sosu の文字列を増やしていく部分で i を 文字列にしてそれが "3" を含んでいないことのチェックを追加します。

投稿2018/10/27 00:26

編集2018/10/27 00:27
katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

プログラミング初心者のための簡単アルゴリズム入門【素数を数えて落ち着くんだ】

javaで素数ならここに良いヒントが凝縮していますのでオススメです。

投稿2018/10/26 00:28

opyon

総合スコア1009

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

求め方については他の方の回答を参照してもらうとして、
場所については、単純に素数判定の前か後ろでよいと思います。
そのまま組み込むと謎の3推しが発生しそうですが、そこは腕の見せ所という事で。

すみません、3を『除く』のですね勘違いしていました。
回答としては、ループ時に3が含まれる数字の場合は
counterを2以外にしてスキップする、などでどうでしょうか。

投稿2018/10/26 00:26

編集2018/10/26 01:20
torisan

総合スコア678

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

if(i%10==3 || i/10%10==3 || i/100==3){ /* 3がある */ }

投稿2018/10/25 23:39

y_waiwai

総合スコア87774

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

michael35

2018/10/25 23:50

どのあたりにそのコードを追加すれば良いですか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問