求助关于JAVA题

来源:百度知道 编辑:UC知道 时间:2024/06/30 05:59:24
自学JAVA道题看不明白,请求各位师傅帮帮忙给一步一步解释程序:
1、 求质数题:
import java.lang.Math.*;
public class MorePrimesTest
{
public static void main(String args[])
{
long[] primes =new long[20]; ----从这里开始能一步步解释下吗?看不太明白
primes[0]=2L;
primes[1]=3L;
long number=5L;
outer;
for(int count=2;count<primes.length;number+=2L)
{
long limit =(long)Math.ceil(Math.sqrt((double)number));
for(int i=1;i<count&&primes[i]<=limlit;i++)
{
if(number_____primes[i]==0L)
{
continue outer;
}
}
primes[count++]=number;
}
for(int j=0;j<primes.length;j++)
{
long n=primes[j];

import java.lang.Math.*;
public class MorePrimesTest
{
public static void main(String args[])
{
/*定义一个long数组*/
long[] primes =new long[20]; //----从这里开始能一步步解释下吗?看不太明白
/*给这个数组的第一个和第二个元素初始化*/
primes[0]=2L;
primes[1]=3L;
/*定义一个long变量并初始化*/
long number=5L;
/*注:数字后面加上L表示是一个long型,我们现在用的JDK5.0或6.0就算不写上L,JVM也能自动转化,从哪个版本开始已经忘记了*/
outer;
//outer;肯定是抄错了,应该是outer:
//outer:是一个标签,结合以下的continue outer使用.
/*如果没有这个outer:,直接continue,只是使内循环继续,如果有了这个标签,用continue outer;就可以跑到外循环去了.这是一种循环的控制方法,当然break也可以这么用.事实上,并不建议这么用.*/
for(int count=2;count<primes.length;number+=2L)
{
//Math.ceil是进一法,比如Math.ceil(1.2)将等于2.0
//Math.sqrt是取正平方根.number=5L
long limit =(long)Math.ceil(Math.sqrt((double)number));
/*所以这一句是number=5,并强制转化为double,这时为5.0,取平方根,约为2.2360,然后进一,即结果为3.0,最后用(long)强制转化,所以这个limit的最后结果为3L*/
for(int i=1;i<count&&primes[i]<=limlit;i++) /*limlit打错字了吧,应该是limit*/
{
/*fo