码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2017-08-05 16:43:24      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:显示   boolean   isp   span   system   ges   img   code   color   

一、判断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 }

代码结果显示:

技术分享 

 

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

标签:显示   boolean   isp   span   system   ges   img   code   color   

原文地址:http://www.cnblogs.com/mujingyu/p/7290167.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!