• for循环输出素数探究【java】


    一、判断953是不是为素数(质数)。

    代码:

     1  /**
     2     判断953是不是为素数(质数)
     3     分析:
     4         素数指整数在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数。
     5         假设953是素数,则:
     6         953 % 2 !== 0
     7         953 % 3 !== 0
     8         953 % 4 !== 0
     9         ……
    10         953 % 952 !== 0
    11         反推得出,只要953被2~952之间的任何一个整数整除,则953不是素数。
    12 
    13         除数从2开始到952按照整数依次递增,则用for循环表示为:
    14             for(int i=2;i<953;i++){
    15                 判断953能否被i整数
    16                     如果能被整除,则953不是素数,结束循环,跳出去输出“953不是素数”
    17                     如果不能被整除,则953是素数,结束循环,跳出去输出“953是素数”
    18             }
    19  */
    20  
    21  public class IsPrime
    22 {
    23     public static void main(String[] args){
    24 
    25         int num = 953;
    26         boolean isPrime = true;   // 标记数字num默认为素数
    27         for(int i=2;i<num;i++) {
    28             if(num%i==0) {        // num能够被2~num-1之间的自然数整数
    29                 isPrime = false;  // 标记数字num为非素数
    30                 break;            // 结束循环
    31             }
    32         }
    33 
    34         System.out.println(isPrime?num+"是素数":num+"不是素数");    
    35 
    36     }
    37 }

    代码结果显示:

     

    二、列出1~100之间的所有素数

    代码:

     1 /**
     2     列出1~100之间的所有素数
     3     分析:
     4         上面代码片段表示判断num为953的自然数是不是素数,
     5         假设num为937,则判断937是不是素数,
     6         假设num为933,则判断933是不是素数,
     7 
     8         因此将num设置为一个变量,利用for循环进行从1~100进行递增,
     9         将上门的代码片段放入该for循环中,判断为素数就打印出来。
    10 
    11         for(int num=2;num<=100;num++) {
    12 
    13             判断num是不是素数的代码片段
    14 
    15         }
    16 
    17 */
    18 
    19 public class IsPrime
    20 {
    21     public static void main(String[] args){
    22 
    23         for(int num=2;num<=100;num++) {
    24             boolean isPrime = true; // 标记数字num默认为素数
    25             for(int i=2;i<num;i++) {
    26                 if(num%i==0) {
    27                     isPrime = false;
    28                     break;
    29                 }
    30             }
    31             if(isPrime) {
    32                 System.out.print(num+" ");
    33             }
    34         }
    35     }
    36 }

    代码解释说明:

    代码结果显示:

     

    三、列出1~100之间的所有素数,并每行显示5个数。

    代码:

     1 /**
     2     列出1~100之间的所有素数,并每行显示5个数。
     3     分析:
     4         从上例代码中可以得到1~100之间的所有素数。
     5         要想每行显示5个数,就是要知道每次素数得出的时候,知道它是第几个出现的,然后进行累加
     6         当累加数字到5时,就换行。
     7 
     8         因此需要用一个标记来记录每次素数输出的次数。
     9 
    10 */
    11 
    12 public class IsPrime
    13 {
    14     public static void main(String[] args){
    15         
    16         int count = 0; // 计数器,用来在每次素数打印时,记录次数。
    17         for(int num=2;num<=100;num++) {
    18             boolean isPrime = true; // 标记数字num默认为素数
    19             for(int i=2;i<num;i++) {
    20                 if(num%i==0) {
    21                     isPrime = false;
    22                     break;
    23                 }
    24             }
    25             if(isPrime) {
    26                 System.out.print(num+" ");
    27                 count++; // 每打印一个素数就记录一次
    28                 if(count%5==0) { // 每计数器累计记录5次,就换行一次。
    29                     System.out.println();
    30                 }
    31             }
    32         }
    33     }
    34 }

    代码变形:计数器如果实现每5次累计之后,就置零也可以达到相应的计数效果。 将上述25行~31行代码进行置换以下代码,即可:

    1 if(isPrime) {
    2   System.out.print(num+" ");
    3   count++; // 每打印一个素数就记录一次
    4   if(count==5) { // 计数器累计到数字5时,就换行一次
    5      System.out.println();
    6      count = 0; // 计数器进行置零
    7     }
    8 }

    代码结果显示:

    四、输出9*9乘法表

    代码:

     1 /**
     2     输出显示9*9乘法表
     3     1*1=1
     4     1*2=2 2*2=2
     5     1*3=3 2*3=6 3*3=9
     6     1*4=4 2*4=8 3*4=12 4*4=16
     7     ……
     8     1*9=9 2*9=18 ……        ……       9*9=81
     9 
    10     分析:按照每行和每列进行规律分析
    11         - 表格共9行,
    12         - 每第几个行输出需要共几个等式
    13 
    14         恒等式格式为 i*j=c
    15             · 每行i从1开始递增到j,表示为每第j行输出可以输出共i个等式
    16                 因此使用for循环表示为:
    17                 for(int i=1;i<=j;j++) {
    18                     ……
    19                 }
    20             · 表示第j行
    21                 for(int j=1;i<=9;j++) {
    22                     输出一行  //该循环体执行一次,就换行一次。
    23                 }
    24         因此第一个for循环体需要在第二个for循环体之内。
    25 */
    26 
    27 public class Test03
    28 {
    29     public static void main(String[] args) {
    30         for(int j=1;j<=9;j++) {
    31             for(int i=1;i<=j;i++){
    32                 System.out.print(i+"*"+j+"="+i*j+" "); // i从1~j循环显示,第j行需要显示1~j个恒等式
    33             }
    34             System.out.println();    // 每上面的i循环体执行一次结束,即该行显示完毕,就换行一次
    35         }
    36     }
    37 }

    代码结果显示:

     

  • 相关阅读:
    让webpack打包支持ES7的async/await语法
    你的GitHub,怎么和我用的不太一样?
    你的GitHub,怎么和我用的不太一样?
    node.js koa 实现长轮询
    node.js koa 实现长轮询
    eggjs解决跨域问题
    ElementUI表单验证攻略:解决表单项启用和禁用验证的切换,以及动态表单验证的综合性问题
    个人对内存中对象中包含对象的理解
    PAT乙级1019
    PAT乙级1036
  • 原文地址:https://www.cnblogs.com/mujingyu/p/7290167.html
Copyright © 2020-2023  润新知