スポンサーサイト





上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

タグ :

   印刷ボタン       この記事に拍手する       このエントリーをはてなブックマークに追加

Return to page top

  • Comments (Close): -
  • TrackBack (Close): -

breakで素数を判定





チョコレートのCMで「Have a break キットカット」というのがありました。

仕事を中断してお茶しようよ、というときに「break」を使いますね。

Javaでも、プログラムの繰り返し処理を途中で終わらせたいときに、

break;

という命令をします。

たとえば、こんなプログラムを作りました。

public class Sample {	
public static void main(String[] args)
{
for(int i=1;i<=10;i++){
System.out.println(i);
if(i==7)
break;
}
}
}


for文で1から10までの数字を繰り返して出力するので、

1
2
・・・
10

と10個の数字が出力されるはずですね。

しかし、その下のif文で、iが7になったら、break; ということなので、7で打ち止め、8から10まではもはや出力されません。break君はまじめなので、7と指定されたら7までは仕事をやり遂げてから休憩に入るのです。


では、break文を利用して、ある数が素数かどうかを判定してみましょう。

素数のことなんて中学校以来という人もいるかもしれませんが、プログラムを作る上で素数というのは勉強に取り上げやすい素材です。

ぜひマスターしましょう。


さて、まず素数の定義ですが、「1とその数以外の数で割り切れない数」です。1は含まれません。

ではソースを載せます。


public static void main(String[] args){
int n=29; //(1)

boolean sosu=true; //(2)
for(int i=2;i<n;i++){ //(3)
if(n%i==0) //(4)
sosu=false;
break; //(5)
}

if(sosu){
System.out.println("素数です");
}else{
System.out.println("素数ではありません");
}
}



まず、(1)で調べたい数を宣言しておきます。今回は29が素数かどうか調べます。

(2)でboolean型の変数sosuを宣言します。boolean型はtrueまたはfalseを返す変数の型です。ややとっつきにくい型ですが、慣れると便利です。素数のプログラムの場合、boolean型を使うことがひそかな裏技です。使わないでも可能かもしれませんが。

さて、素数とは「1とその数以外の数で割り切れない数」でした。29が素数かどうかを判定するには、29÷2、29÷3、・・・、29÷28とえんえん割り続けて、余りが0にならなかったらOKです。

人間なら29が素数であることはだいたい分かる(かもしれない)ですが、コンピュータは一つ一つ割り算をしないと納得してくれないのです。

その繰り返し処理が、//(3)です。iは割る数で、2からn(つまり29)より1つ小さい28まで、1ずつ増えていきます。

そして、//(4)で素数でない場合の処理をします。もし、29をn(2から29までの数)で割った余りが0になるものがあったら、それはもはや素数ではありません。なので、素数かどうかを表すboolean型の変数sosuをfalseに転換させます。それが、//(5)です。

最後に、調べた数が素数である場合とそうでない場合とで別々に出力します。

関連記事

タグ :

   印刷ボタン       この記事に拍手する       このエントリーをはてなブックマークに追加

Return to page top

Comments:

Comment Form
Only inform the site author.

Trackback+Pingback:

TrackBack URL for this entry
http://javamania.blog25.fc2.com/tb.php/23-8d07ced9
  • 閉じるボタン
クラスライブラリ解説 目次
クラスライブラリとは
 ├ Java APIの調べ方
 ├ Objectクラスを調べる
 ├ ライブラリのインポート
 ├ 完全修飾クラス名を調べる
 ├ staticインポート
 ├ 外部ライブラリの利用

文字列を扱う
 ├ Stringとイミュータプル
 ├ StringBuilder 文字列の連結
 ├ toString()のオーバーライド
 ├ toXxCase() 大文字と小文字
 ├ compareTo() 値の比較
 ├ parseDouble() 文字を小数値に
 └ 文字列を抜き出す
 ├ char配列からString型へ変換
 ├ 空白文字の除去

日付を扱う
 ├ Calendar 現在の日付
 ├ Date 日付の表示

数値演算を扱う
 ├ round() 切上・切捨・四捨五入
 ├ BigDecimal
 ├ sqrt(),pow() 累乗と平方根
 ├ BigInteger
 ├ int型の最大値・最小値
 ├ random() 乱数作成

ファイルを扱う
 ├ ファイルの存在確認
 ├ ファイルを作成
 ├ ファイルの削除
 ├ ファイルサイズを調べる

入出力ストリーム
 ├ ファイルを読み込む
 ├ 画像ファイルのコピー
 ├ 日本語の読み込みと書き出し
 ├ バッファ入出力
 ├ データ型フリーの出力ストリーム
 ├ getBytes()メソッド

書式つき入出力
 ├ 書式を指定して出力
 ├ 引数インデックス
 ├ 整数値のフォーマット
 ├ 小数値のフォーマット
 ├ 九九の表のフォーマット

例外処理
 ├ printStackTrace()
 ├ NullPointerException
 └ NumberFormatException
月別アーカイブ
カテゴリ
リンク
QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。