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和它本身以外不再有其他因数。
这道题只要理解质数的计算方法就容易解答。
参考代码如下:
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+" ");
}
}
}
为什么要除以到自身的一半?
追答例如: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)是一个质数。
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);} ...