扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
素数又称质数,有无限个。素数定义为在大于1的整数中,除了1和它本身以外不再有其他因数的数称为素数。
成都服务器托管,创新互联提供包括服务器租用、资阳托管服务器、带宽租用、云主机、机柜租用、主机租用托管、CDN网站加速、国际域名空间等业务的一体化完整服务。电话咨询:18982081108
java程序找出2-100之间的所有素数,代码如下:
public void findPrimeNumber(){
//存放素数集合
ListInteger lists=new ArrayListInteger();
//遍历2-100
for(int x=2;x100;x++){
//标志是否为素数,默认是true
boolean flag=true;
//循环x除以(x/2)的数,能整除则不是是素数(不包含2)
for(int y=2;yx/2;y++){
if(x%y==0){
//能整除,则把标志设置为false,不是素数
flag=false;
break;
}
}
if(flag){
//flag还是true,则是素数
lists.add(x);
}
}
System.out.println("2-100的素数集合:"+lists);
}
结果:
2-100的素数集合:[2, 3, 4, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
求1-N以内的所有素数,实现思路如下:
1、 得到1到n之间的素数,存到一个ArrayList集合。
2、判断一个数是不是素数:只能被1和本身整除
说明:从2开始除,不需要到n,也就是循环条件是 n 就可以,这之间只要被整除了,那么他就不是素数了。
3、设置主函数,运行 getPrimeNumberToN获取限定范围内的素数。
执行结果图:
扩展资料:
实现功能的编程事项:
1、模块化思想。
先拆分需求,先拆分先考虑怎么确定一个数是不是素数,然后再复用到所有。不能把方法堆到一起,否则无法复用代码。
2、注意注释。
就算是自己的测试代码,尽量写清楚注释,这样即使过了三个月,再看代码,也能清晰明了。不要觉得简单,就懒得注释。
3、注意参数命名。
从类名到方法名,再到变量名,都不能随意取名,关于这个命名,不要嫌弃长,重点是意思清楚明白。见名知意(语义化),是最好的。
public class Test{
public static void main(String []arg){
prime(100);
}
// 什么是质数,合数,约数?
// “素数”,又称“质数”,是指:
// 除1和其自身之外,没有其它约数的正整数
// 如 2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,...
// 2是最小的质数,也是唯一的偶质数
// 质数有无数多个
// 与素数相对的,有“合数”:
// 除1和其自身之外,仍有其它约数的正整数
// 规定:1和0既不是质数,也不是合数
// 一个数除了1和它本身不再有别的约数,
// 这样的数叫做质数,也叫素数。20以内
// 的质数有:2、3、5、7、11、13、17、19
// 一个数除了1和它本身还有别的约数,这样
// 的数叫做合数。1和0不是质数也不是合数。20
// 以内的合数有:4、6、8、9、10、12、14、15、16、18、20。
// 数a能被数b整除,a就是b的倍数,b就是a的约数。例如:15÷5=3,
// 那么15是5的倍数,5是15的约数。约数与倍数是相互的,
// 不能单独说15是倍数,5是约数。在讨论质数、合数、约数、
// 倍数都指自然数(0除外)。
public int prime(int num) {// 能求无限大的质数//但如果所求的范围太大,计算的时间需要很久
long is = System.currentTimeMillis();
int n, m, i = 0;
label1: for (n = 2; n = num; n++) {
for (m = 2; m = n / 2; m++) {
if (n % m == 0)
continue label1;
}
i++;
// System.out.println("第" + i + "个素数是:" + n);
}
long ie = System.currentTimeMillis();
System.out.println("time=" + (ie - is));
return i;
}}
这个的主要点是嵌套的循环,要注意循环要遍及数据的循环、逻辑判断,素数就是表示除1及其本身外不能被其他比他小的整数整除,掌握这点就可以理解了,下面代码仅供参考:
//实现求1-100之间的所有素数
public class Test
{
public static void main(String[] args)
{
//使用外层循环来控制1-100的数据的遍历
for(int i = 1 ; i = 100 ; i++){
//素数就是除1及其本身外不能被其他整数整除
int j = 2;
while(i j){
//如果可以被小于他的数据整除,表示该数不是素数,跳出循环
if(i % j == 0){
break;
}
j++;
}
//如果没有找到比其小的数据可以整除,则表示该数是素数
if(i == j){
System.out.println(i);
}
}
}
}
质数又称素数。一个大于1的自然数,如果除了1和它自身外,不能被其他自然数整除的数;否则称为合数。根据算术基本定理,每一个比1大的整数,要么本身是一个质数,要么可以写成一系列质数的乘积;而且如果不考虑这些质数在乘积中的顺序,那么写出来的形式是唯一的。下面是一个java求100之内的素数简单示例。
public class test {
public static void main(String[] args) {
int i,n,k=0;
for (n = 3; n=100; n++) { //3~100的所有数
i=2;
while (in) {
if (n%i==0) break; //若能整除说明n不是素数,跳出当前循环
i++;
}
if (i==n) { //如果i==n则说明n不能被2~n-1整除,是素数
k++; //统计输出数的个数
System.out.print(i+ "\t ");
if (k %6==0) //每输出5个则换行
System.out.println();
}
}
}
}
1、设计实现:通过for循环输出,使用break跳出。
(1)需求:输出1~100的所有素数。
(2)素数:
--判断条件1:只能被1和本身整除的称为素数。
--判断条件2:在区间(1,x/2)中找不到能整除素数x的整数。
--判断条件3:在区间(1,sqrt(x))中找不到能整除素数x的整数。
(3)完整代码如下:
2、if(b)语句解析:是否是质数的标志,是就输出 。
b的值写在if (n % i == 0){ b = false; }中。这就是质数的判断发发(即如果有能被整除的,则不是质数 ),判断结束后给b赋值,如果为真就通过if语句输出,如果为假则跳过循环(break)。
扩展资料:
java中break函数:用于switch语句当中,用于终止语句。
试验代码如下:
输出:
参考资料:
百度百科--break
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流