用java编写代码求素数 java求素数的算法

javafor循环 求素数楼主的程序略有误,下为修改后的代码
public class Test {
public static void main(String[] args) {
int i =1,j =2;
for(i=1;i=100;i) {
for(j=2;j=i;j){
//素数是指除了1和自身外不能被任何数整除的数
//因此遍历每一个小于i大于2的整数j
if(i%j==0)
//如果i能够被j整除
if(i==j)
//如果当i等于j的时候则满足i是素数的条件,即只能被1(
//j是从2计数的)和自身整除,因此i是素数
System.out.println(i"是素数");
else
//在如果存在一个小于i大于2的整数j可以整除i,则i必不是
//素数,因此break操作.
break;//如果i可以被j整除且j不等于i,则跳出循环
}
}
}
}
亲测可用..
Java语言中 , 用类的方法求素数判断素数方法,你供参考,代码如下:
public class SuNum {
public static void main(String[] args) {
if(getResult(4)){
System.out.println("素数");
}else{
System.out.println("非素数");
}
}
public static boolean getResult(int num) {
boolean isPrime = true; // 定义布尔变量判断是否素数.是:true;否:false
int k = (int) Math.sqrt(num);
for (int j = 2; j = k; j) {
if (num % j == 0) {
isPrime = false; // 如果能够有数整除num,那么就不是素数.
}
}
if (isPrime) {
isPrime = true;
}
return isPrime;
}
}
满意请采纳!
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 ( jk )就不成立了,则i 不会被输出.
总结一点:就是如果中途or最后一次循环,找到能整除的数了,那么因为break的关系,最后就不会执行 j, 所以j = k的条件是能保证的. 换言之,如果jk (亦即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这个变量了.如果我上面说的你理解还是比较困难,可以先理解用布尔变量来控制的写法.这个理解了,用jk 判断的就也很容易理解了.
编写java程序找出2-100之间的所有素数 求大神素数又称质数,有无限个 。素数定义为在大于1的整数中 , 除了1和它本身以外不再有其他因数的数称为素数 。
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){
【用java编写代码求素数 java求素数的算法】//能整除,则把标志设置为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]
利用Java编写应用程序求100以内的全部素数质数又称素数 。一个大于1的自然数用java编写代码求素数 , 如果除用java编写代码求素数了1和它自身外,不能被其用java编写代码求素数他自然数整除的数用java编写代码求素数;否则称为合数 。根据算术基本定理,每一个比1大的整数,要么本身是一个质数,要么可以写成一系列质数的乘积用java编写代码求素数;而且如果不考虑这些质数在乘积中的顺序,那么写出来的形式是唯一的 。下面是一个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();
}
}
}
}
java求素数代码输出前500个素数
其中
for
(int
i
=
2;
i
=
math.sqrt(k);
i)
从2开始,1不用比较,如果还有另外一个不是他本身的数可以整除他,那他就不是素数
math.sqrt(k)
是原先一个人提出的算法,加大效率的,你可以测试看看
已经按照你的要求用到了while和if
else
下面的朋友···别人说要用什么写就用什么写···有时候按要求去就好了
class
a
{
public
static
void
main(string
arg[])
{
int
num
=
0;
int
k=2;
while
(num
500)
{
if
(isprime(k))
{
system.out.print(k
"
");
num;
}
k;
}
}
public
static
boolean
isprime(int
k)
{
if
(k
==
2)
return
true;
else
if
(k
%
2
==
0)
return
false;
else
{
for
(int
i
=
2;
i
=
math.sqrt(k);
i)
if
(k
%
i
==
0)
return
false;
return
true;
}
}
}
用java编写代码求素数的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java求素数的算法、用java编写代码求素数的信息别忘了在本站进行查找喔 。

    推荐阅读