2020.10.28
数学
1からNの和
1からNの全ての自然数の和を計算するプログラムの作り方を説明します。
N=2の和は、1+2=3 N=3の和は、1+2+3=6 N=4の和は、1+2+3+4=10 N=10の和は、1+2+3+4+5+6+7+8+9+10=55
1から順番にnまで足していく方法
int n = 10; int sum = 0; for ( int i = 1; i <= n; ++ i ) sum = sum + i;
Sum01.java
001 002 003 004 005 006 007 008 009 010 011 012 013 014
public class Sum01 { public static void main( String[] args ) { // 足す値の最大値nの値を格納する変数 int n = 10; // 1からnを足した値を計算 int sum = 0; for ( int i = 1; i <= n; ++ i ) sum = sum + i; // 結果を表示 System.out.println( "1~" + n + "の和 : " + sum ); } }
コンパイル ソースコードが「ANSI」の場合
C:\talavax\javasample>javac -encoding sjis Sum01.java
コンパイル ソースコードが「UTF-8」の場合
C:\talavax\javasample>javac Sum01.java
実行
C:\talavax\javasample>java Sum01
出力結果
1~10の和 : 55
1から10の和が正しく出力されています。(1+2+3+4+5+6+7+8+9+10=55)
自然数の和の公式を使う方法
1からnの和は、n(n+1)/2という式で計算できます。これが和の公式です。
この式を利用すれば、1回の計算で和を求めることができます。nの値が大きすぎると計算結果がint型に収まらないことがあります。
計算するnの値が大きい場合は、long型の変数で計算してください。
公式について詳しく知りたい方は、以下の記事を参考にしてください。
Sum02.java
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018
public class Sum02 { public static void main( String[] args ) { // 足す値の最大値nの値を格納する変数 int n = 10; // 合計値を格納する変数 int sum; // 和の公式で、1からnを足した値を計算 if ( 1 > n ) sum = 0; else sum = n * ( n + 1 ) / 2; // 結果を表示 System.out.println( "1~" + n + "の和 : " + sum ); } }
コンパイル ソースコードが「ANSI」の場合
C:\talavax\javasample>javac -encoding sjis Sum02.java
コンパイル ソースコードが「UTF-8」の場合
C:\talavax\javasample>javac Sum02.java
実行
C:\talavax\javasample>java Sum02
出力結果
1~10の和 : 55
for文で計算した結果同様、1から10の和が正しく出力されています。
以上です。