博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
每日一练No.4
阅读量:5935 次
发布时间:2019-06-19

本文共 1226 字,大约阅读时间需要 4 分钟。

【如何列出质数】

输出在指定范围内的所有质数。

【编程思路】

1不是质数,也不是合数,把1排除。2是质数,保留,把2后面所有能被2整除的数都划去。2后面第一个没划去的数是3,把3留下,再把3后面所有能被3整除的数都划去,一直循环做下去,就会把不超过N的全部合数划去,留下的就是不超过N的全部质数。

【源代码】

1 package javaexamples; 2 import java.util.Arrays; 3  4 public class SuShu 5 { 6     private static boolean[] primeNumber(int num){
//求质数 7 if(num<0){
//检查指定的范围:质数必须大于零 8 System.out.println("范围必须大于0"); 9 return null;10 }11 boolean[] primes=new boolean[num+1];//声明布尔类型数组,长度为范围+112 primes[1]=false;//将特殊数字1抛出,因为1不是质数13 Arrays.fill(primes,2,num+1,true);//将布尔数组元素的值都赋为true,2是索引值,从2开始,到num+1终止14 int n=(int)Math.sqrt(num);//Math.sqrt()方法用于求开方15 for(int i=1;i

【运行结果】

范围在100内的质数有:
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
一共有25个

【关键技术解析】

1、定义两个方法,一个是求质数的,一个是显示质数的。

2、求质数时需要检查质数范围是否正确。

3、为了方便,将质数所在的布尔类型数组的index值与数字值相匹配,所以长度设置为范围+1。

4、Math.sqrt()方法用于求开方。

5、Array.fill(boolean[] a, int fromIndex, int toIndex, boolean val) 方法,是将指定的 boolean 值分配给指定 boolean 型数组指定范围中的每个元素。

6、在输出时,判断数组元素是否为true值,下标值即为质数,输出时较方便。

【心得】

感谢aniuer给了我java的中文API,今天学会了查阅,的确方便很多。

只是代码中primeNumber()方法中for循环的内容不太明白,还要仔细研究一下……

转载于:https://www.cnblogs.com/mengqiqi/archive/2012/09/13/2683549.html

你可能感兴趣的文章
Centos下基于Hadoop安装Spark(分布式)
查看>>
POJ2348 UVa10368 HDU1525 Euclid's Game【博弈】
查看>>
Java 位运算
查看>>
好用的CSS模块化打包工具CSS-COMBO
查看>>
python 中的字符和字符串
查看>>
C#Winform限制Textbox只能输入数字
查看>>
EL表达式经典用法
查看>>
java.lang.NoClassDefFoundError: javax/mail/Authenticator
查看>>
联想集团涨超7% 杨元庆持股比例升至8.12%
查看>>
各省光伏十三五规划汇总:总规模将超130GW
查看>>
Apache Storm 官方文档 —— 常用模式
查看>>
聊聊JVM的年轻代
查看>>
lvm逻辑卷管理
查看>>
VS2010不能断点/下断的问题
查看>>
[Android]权限处理
查看>>
Spark bind on port 0. Attempting port 1 问题解决
查看>>
兼容所有浏览器的复制到剪切板功能,悬浮层不能复制问题解决
查看>>
day 20 第一阶段考试总结
查看>>
我的友情链接
查看>>
Centos 7.5 部署DNS
查看>>