Java入門ノート(三)

3227 ワード

Java学習ノート(三)
  • ネストサイクル
  • 九九乗法表
  • は100以内の素数
  • を求めます。
  • 質数求めるアルゴリズムを最適化する
  • ネストループ
    九九乗法表
    
    for (int i = 1; i <= 9; i++) {
                System.out.println();
                for (int j = 1; j <= i; j++) {
                    System.out.print(i + " * " + j + " = " + (i * j) + "  ");
                }
     }
           
      :      
    1 * 1 = 1  
    2 * 1 = 2  2 * 2 = 4  
    3 * 1 = 3  3 * 2 = 6  3 * 3 = 9  
    4 * 1 = 4  4 * 2 = 8  4 * 3 = 12  4 * 4 = 16  
    5 * 1 = 5  5 * 2 = 10  5 * 3 = 15  5 * 4 = 20  5 * 5 = 25  
    6 * 1 = 6  6 * 2 = 12  6 * 3 = 18  6 * 4 = 24  6 * 5 = 30  6 * 6 = 36  
    7 * 1 = 7  7 * 2 = 14  7 * 3 = 21  7 * 4 = 28  7 * 5 = 35  7 * 6 = 42  7 * 7 = 49  
    8 * 1 = 8  8 * 2 = 16  8 * 3 = 24  8 * 4 = 32  8 * 5 = 40  8 * 6 = 48  8 * 7 = 56  8 * 8 = 64  
    9 * 1 = 9  9 * 2 = 18  9 * 3 = 27  9 * 4 = 36  9 * 5 = 45  9 * 6 = 54  9 * 7 = 63  9 * 8 = 72  9 * 9 = 81  
    
    100以内の素数を求めます。
            boolean flag = true;
            for (int i = 2; i <= 100; i++) {
    
                for (int j = 2; j < i; j++) {
                    if (i % j == 0) {
                        flag = false;
                    }
                }
    
                if (flag == true) {
                    System.out.print(i+"  ");
                }
                flag = true;
            }
    
    2  3  5  7  11  13  17  19  23  29  31  37  41  
    43  47  53  59  61  67  71  73  79  83  89  97  
    
    質数計算方法を最適化する
    簡単な最適化1:
       :
            boolean flag = true;
            long start = System.currentTimeMillis();
            for (int i = 2; i <= 100000; i++) {
                for (int j = 2; j < i; j++) {
                    if (i % j == 0) {
                        flag = false;
                    }
                }
                if (flag == true) {
                    System.out.print(i);
                }
                flag = true;
            }
            System.out.println("
    "); long end = System.currentTimeMillis(); System.out.println(" :" + (end - start)); :13355
        break:
    boolean flag = true;
            long start = System.currentTimeMillis();
            for (int i = 2; i <= 100000; i++) {
                for (int j = 2; j < i; j++) {
                    if (i % j == 0) {
                        flag = false;
                        break;
                    }
                }
                if (flag == true) {
                    System.out.print(i);
                }
                flag = true;
            }
            System.out.println("
    "); long end = System.currentTimeMillis(); System.out.println(" :" + (end - start)); :1178
       :
    boolean flag = true;
            long start = System.currentTimeMillis();
            for (int i = 2; i <= 100000; i++) {
                for (int j = 2; j <= Math.sqrt(i); j++) {
                    if (i % j == 0) {
                        flag = false;
                        break;
                    }
                }
                if (flag == true) {
                    System.out.print(i);
                }
                flag = true;
            }
            System.out.println("
    "); long end = System.currentTimeMillis(); System.out.println(" :" + (end - start)); :87