java代码找素数 素数的java代码

编写java程序找出2-100之间的所有素数 求大神

素数又称质数,有无限个。素数定义为在大于1的整数中,除了1和它本身以外不再有其他因数的数称为素数。

10年积累的网站制作、成都网站设计经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站制作后付款的网站建设流程,更有万全免费网站建设让你可以放心的选择与我们合作。

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]

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编写应用程序求100以内的全部素数?

质数又称素数。一个大于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();

}

}

}

}

用java编写一个程序段,输入一个自然数,判断该数是否为素数。

int n = 7; //输入的自然数\x0d\x0a int k = 0; //输出的状态控制 初始化为0\x0d\x0a for (int i = 2; i

回答于 2022-12-11

用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和它本身以外,有数能整除它,这个数就不是素数.

在这里,有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 的取反)表示没有找到能整除的数.其实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代码找素数 素数的java代码
分享URL:http://scyanting.com/article/dodsdhh.html