「java找素数快捷方法」如何快速找素数
本篇文章给大家谈谈java找素数快捷方法,以及如何快速找素数对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
用java求3到100的素数,初学者,求简单的
public static void main(String[] args) {
int count = 0;
int sum = 0;
for (int i = 2; i = 100; i++) {
boolean flag = false;
for (int j = 2; j = i 1; j++) {
if (i % j == 0) {
flag = true;
break;
}
}
if (!flag) {
System.out.print(i + " ");
sum += i;
count++;
}
}
System.out.println();
System.out.println("1--100之间的素数(也称质数)的个数 --"+count);
System.out.println("1--100之间的素数(也称质数)的个数之和 --"+sum);
}
java求素数代码
求1-N以内的所有素数,实现思路如下:
1、 得到1到n之间的素数,存到一个ArrayList集合。
2、判断一个数是不是素数:只能被1和本身整除
说明:从2开始除,不需要到n,也就是循环条件是 n 就可以,这之间只要被整除了,那么他就不是素数了。
3、设置主函数,运行 getPrimeNumberToN获取限定范围内的素数。
执行结果图:
扩展资料:
实现功能的编程事项:
1、模块化思想。
先拆分需求,先拆分先考虑怎么确定一个数是不是素数,然后再复用到所有。不能把方法堆到一起,否则无法复用代码。
2、注意注释。
就算是自己的测试代码,尽量写清楚注释,这样即使过了三个月,再看代码,也能清晰明了。不要觉得简单,就懒得注释。
3、注意参数命名。
从类名到方法名,再到变量名,都不能随意取名,关于这个命名,不要嫌弃长,重点是意思清楚明白。见名知意(语义化),是最好的。
java求素数
首先楼主应该对素数的定义已经清楚了吧?其实就是一个数,如果存在1和它本身以外,有数能整除它,这个数就不是素数.
在这里,有2个关键的变量,我估计解释一下你就能看得明白这个算法了.
1.关于变量k.变量k的作用是优化整个算法,因为比如要判断一个数13是不是素数,我们没必要从2循环到13.只要循环到对13开根号.13开根号大概是3.6多,强转为int类型后是3.也就是说只要检查2,3是否能整除13.如果不能,13肯定是一个素数.因为比如48这个数,你前面检测到被4整除等于12,那么继续循环超过Math.sqrt(48)的话,无非就是得到一个反过来的被12除等于4的结果.这个没有必要.
2.关于变量j.注意点1:j是在最外层的循环体中定义的.这个时候刚定义完,j的值是初始的0.然后j从2开始,一直到小于等于k结束.这里是控制尝试整除的循环次数.一旦发现在这个范围内有数能整除i,那么就跳出循环.
所以,对于你不理解的那个部分,首先确定一点,程序只要执行到break,就说明这个数是素数.
例如我们这次k = 10,那么是要从j = 2到10逐一检测 i 是不是能被 j 整除.当j = 7的时候比如可以整除了,就跳出当前内层循环了.这时候, j 显然是不大于 k 的,因为只要是中途跳出,因为内层循环(j = 2; j = k; j++)的控制,只要在循环过程中跳出来的,那么j 肯定 = k.
只有循环到j = 10依然没有break的话,根据for循环的执行顺序,会执行j++,然后去判断j = k 是否为true,为true则继续下一次循环,否则循环结束.而在这里,如果到10还没有能够整除的话,j是会在10的基础上自增的.这时候j就=11了.
那么if ( j k )就不成立了,则i 不会被输出.
总结一点:就是如果中途or最后一次循环,找到能整除的数了,那么因为break的关系,最后就不会执行 j++, 所以j k (亦即j = k 的取反)表示没有找到能整除的数.其实j最大也就只能等于k+1.
另外,,你也可以自己修改修改,来加深理解.例如
boolean isPrime; //定义布尔变量判断是否素数.是:true;否:false
for (int i = 3; i = 100; i++) {
isPrime = true;
int k = (int) Math.sqrt(i);
for (int j = 2; j = k; j++) {
if (i % j == 0) {
isPrime = false; //如果能够有数整除i,那么就不是素数.
break;
}
}
if (isPrime) {
System.out.println(i);
}
}
这样就没有必要在外层循环里就定义j这个变量了.如果我上面说的你理解还是比较困难,可以先理解用布尔变量来控制的写法.这个理解了,用j k 判断的就也很容易理解了.
用java求100以内的全部素数
这个的主要点是嵌套的循环,要注意循环要遍及数据的循环、逻辑判断,素数就是表示除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);
}
}
}
}
java怎么判断素数
1、目前使用较有效的方法是试除法。用试除法判断一个自然数a是不是素数时,用各个素数从小到大依次去除a,如果到某一个素数正好整除,这个a就可以断定不是素数;如果不能整除,当不完全商又小于这个素数时,就不必再继续试除,可以断定a必然是素数。
2、素数又称质数。一个大于1的自然数,除了1和它本身外,不能被其他自然数整除,换句话说就是该数除了1和它本身以外不再有其他的因数;否则称为合数。
3、素数是与合数相对立的两个概念,二者构成了数论当中最基础的定义之一。基于质数定义的基础之上而建立的问题有很多世界级的难题,如哥德巴赫猜想等。目前为止,人们未找到一个公式可求出所有素数,所以还没有固定的判断公式。
4、一般记住100以内的素数就可以了。有2、3、5、7、11、13、19、17、23、29、37、31、41、47、43、53、59、61、71、67、73、83、89、79、97,一共25个。
关于java找素数快捷方法和如何快速找素数的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-11-27,除非注明,否则均为
原创文章,转载请注明出处。