for循环输出素数探究java
Posted 木鲸鱼的博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 }
代码结果显示:
以上是关于for循环输出素数探究java的主要内容,如果未能解决你的问题,请参考以下文章