java 1到100内的质数

int i,j;
for(i = 2; i <= 100; i++){//输出2-100的整数
for(j = 2; j <= i/2; j++){
if(i % j == 0)
break;
}
if(j > i/2){
System.out.println(i);
}
}
System.out.println();
请给我讲讲这个题,看不懂

int i,j;

for(i = 2; i <= 100; i++){//从2数到100,判断之间的每一个数是否是质数

//下面的循环是质数判断过程

for(j = 2; j <= i/2; j++){

if(i % j == 0)

break;//如果这个数能被一个数整除,那么这个数不是质数。break的作用是跳出此次循环,进入下一次循环。

}

if(j > i/2){

System.out.println(i);//如果这个数不能被自身1/2的数整除,他就是质数,输出这个数.System.out.println()这个语句就是输出语句

}

}

System.out.println();//这句语句是多余的,什么也没打印。

完整代码及运行结果如图。

拓展资料

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

这道题只要理解质数的计算方法就容易解答。

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2019-09-08

参考代码如下:

package test;

public class Test {

public static void main(String[] args) {

int j;

for (int i = 2; i <= 100; i++) // 1不是素数,所以直接从2开始循环

{

j = 2;

while (i % j != 0)

j++; // 测试2至i的数字是否能被i整除,如不能就自加

if (j == i) // 当有被整除的数字时,判断它是不是自身

System.out.println(i); // 如果是就打印出数字

}

}

}

运行结果如下图:

扩展资料

下面这个代码也可以:

public class SuShu {

public static void main(String[] args) {

boolean bool;

for(int i=1;i<100;i++)

{

bool=true;

for(int j=2;j<=Math.sqrt(i);j++)

{
if(i%j==0)

{

bool=false;

}

}
if(bool==true)

System.out.print(i+" ");

}

}

}

本回答被网友采纳
第2个回答  推荐于2017-10-09
for(i = 2; i <= 100; i++){ // 从2开始循环,一直到100
for(j = 2; j <= i/2; j++){ // 对于从2到100之间的数,每个数都拿来除以从2到它自身一半(i/2)的所有数,看是否能被整除;
if(i % j == 0) // 如果能被整除,说明这个数拥有除了 1 和它自身以外的商,不是质数;
break; // 跳出 j 循环,继续 i 循环
}
if(j > i/2){ // 如果2-100之间的某个数,除了1 和它本身之外,没有其他可以整除的数,则是质数;
System.out.println(i); // 输出这个质数
}
}追问

为什么要除以到自身的一半?

追答

例如:10这个数,能整除它的最大的数,除了它本身,就是5,超过了6之后,已经不用看了,不可能再整除。所以,到一半就可以知道它有没有其他能被整除的数了。这是一种提高效率的算法,如果你愿意,也可以不是到一半,而是一直循环到它自身的那地方去:for(j = 2; j <= i; j++) 。
如果有100个数要拿来验证,那么验证到它自身一半的算法所用的时间,远远小于验证到它自身那地方的时间的 。当数值很大、很多的时候,可以节约很多计算资源和时间。

追问

当i=2,j=2时,余数为0,为什么还能输出2?

追答

i=2时,
for(j = 2; j i/2){
System.out.println(i);
}

却被执行了。

i=2时,
j > i/2满足,它(2)是一个质数。

本回答被提问者和网友采纳
第3个回答  2012-11-26
你这代码不好

for(int i=2;i<100;i++){
int j;
for(j=2;j<=Math.sqrt(i);j++){//尝试到i的平方根
if(i%j==0){//若能整除退出内层循环
break;
}
}
//若j大余i的平方根(正)则表明内层循环走完一趟都没能被整除.i为质数
if(j>Math.sqrt(i))System.out.println(i);
}
第4个回答  2017-09-11
我也刚学了一个星期java了,给你们发一下也是自己写的。
int cont=0;//计数器

start:for(int f=2;f<=100;f++){//循环输出99次
for(int i=2;i<f;i++){//循环输出f次
if(f%i!=0){//如果f取i到f-1的所有余数不等于0 就跳出循环 计数器+1 然后打印f

}else{//否则余数等于0继续执行goto=start
continue start;
}
}
cont++;
System.out.print(f+"\t");
}
System.out.println("共"+cont+"质数");

Java求100以内的质数的小代码!
(1)需求:输出1~100的所有素数。(2)素数:--判断条件1:只能被1和本身整除的称为素数。--判断条件2:在区间(1,x\/2)中找不到能整除素数x的整数。--判断条件3:在区间(1,sqrt(x))中找不到能整除素数x的整数。(3)完整代码如下:2、if(b)语句解析:是否是质数的标志,是就输出 ...

用java求100内的质数
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 public static void main(String[] args) { int j;for (int i=2;i<=100;i++) \/\/1不是质数,所以直...

java 如何输出1到100间的质数
public class Test { public static void main(String[] args) { int j;for (int i = 2; i <= 100; i++) \/\/ 1不是素数,所以直接从2开始循环 { j = 2;while (i % j != 0)j++; \/\/ 测试2至i的数字是否能被i整除,如不能就自加 if (j == i) \/\/ 当有被整除的数字时...

JAVA编写:分别运用三种循环语句编程实现找出1~100中所有质数
public class c3_18 \/\/求1--100间的素数 \/\/break语句 { public static void main(String[] args){ System.out.println(" 1--100之间的质数分别是: ");int n=0,m,j,i,s = 0;for(i=3;i<=100;i+=2){ m=(int)Math.sqrt((double)i);for(j=2;j<=m;j++){if((i%j)==...

怎么用java的流程图求100以内质数和啊?
要使用Java编写一个程序来找出100以内的质数,你可以遵循以下流程图来构建程序:flow st = start: 开始 initialize = operation: 初始化变量 initialize2 = operation: 初始化结果列表 check_prime = condition: 检查数字是否为质数 add_to_list = operation: 将质数添加到结果列表 increment = operation...

用java求1到 100之间最大的那个质数?看看你们怎么编的?
public static void main(String[] args) { int max = 0;for(int i = 1;i<=100 ; i++){ if(IsPrime(i)){ max = i;} } System.out.println("1到 100之间最大的质数为:"+max);} public static boolean IsPrime(int k) { if (k == 2)return true;else if (k % 2 == 0...

java 如何输出1到100间的质数
public class Test{static int N = 100;public static void main(String[] args){boolean[] a = new boolean[100];for(int i=0;i<N;++i)a[i]=true;for(int i=2;i<N;++i)for(int j=i;i*j<N;++j)a[i*j]=false;for(int i=2;i<N;++i)if(a[i]) System.out.print(" ...

java 输出 1-100所有质数的问题
你可以这样:public class Ch0307{ public static void main(String[] args){ System.out.println(2);for (int i = 3; i <= 100; i++){ for (int j = 2; j < i; j++){ if (i%j == 0){ System.out.println(i);\/\/如果能进入if则是质数 打印即可 break;} } } } } ...

输出1到100之间的素数 用JAVA编写
int MAX_NUM = 100; \/\/最大 List <int> primes = new List <int>(); \/\/保存所有找到的质数 primes.Add(2); \/\/2是第一个质数也是唯一的偶数 for(int i = 3; i <= MAX_NUM; i+=2 ) \/\/2以上的所有偶数其实都根本不需要算 { for( int j = 0;primes[j]*primes[j] < i;...

用java输出1到100的质数,我写了这个程序,不知道错在哪里,谢谢 public...
public class JavaDemo { public static void main(String[] args) { boolean m = true;for (int x = 2; x <= 100; x++)\/\/ 表示1-100的数 { m=true;for (int i = 2; i < x; i++) { if (x % i == 0) { m = false;break;} } if (m)System.out.println(x);} ...

相似回答