哪位大侠帮忙解释一下这个java程序:输出2到200之间的所有素数。完全看不懂呀,请帮忙详细解释一下,谢谢啦

作者&投稿:贾盛 (若有异议请与网页底部的电邮联系)
import java.util.*;
public class Ex4_5 {
public static void main(String[] args) {
// TODO code application logic here
int a,b,i;
a=3;b=2;i=0;
int[] m=new int[198];//定义一个长为198的数组,因为这个程序的意思是最大的200要分别除
//以2-199,所以需要198个位置来记录计算结果
System.out.println(2);
for(int v=0;v<=197;v++){//将数组全初始化为1
m[v]=1;
}
for(a=3;a<=200;a++){//外层循环,从3开始,验证3-200,即a
for(b=2,i=0;b<a;b++,i++){//内层循环
m[i]=a%b;//每一个数a分别除以2到a-1,取余,并存入数组
}
Arrays.sort(m);//调用系统函数排列数组
if(m[0]!=0){//升序排列后,m[0]中存放着a除以2到a-1得到的余数中最小的那个
//如果整除了,余数就是0,当然是最小的啦
//所以判断下,如果最小的余数都不为0,说明a不能被2到a-1的数整除,数a是素数
System.out.println(a);}
}
}
}
解释完了,你明白了么?

太复杂了,给你提供个简单的:
public static void main(String args[]){
for(int i =2;i <= 200;i++){
if(isPrime()){
System.out.println(i);
}
}
}
public boolean isPrime(int num)
for(int j=2;j<=num/2;j++){
if(num%j == 0)
return false;
}
return true;
}

int a,b,i;
a=3;b=2;i=0;//声明了3个变量,并赋值
int[] m=new int[198];//声明数组,长度198(因为是200,写的人是先把开头和结尾的数排除了)
System.out.println(2);//打印出一个“2”,确认程序执行到这里

for(int v=0;v<=197;v++){
m[v]=1;
}//这里把198长度的数组全部赋值1.

//以a循环做被除数,b循环做除数,开始得到余数数组。因为a是从3开始,所以,200只有198的长度,前面的排除了。
for(a=3;a<=200;a++){
for(b=2,i=0;b<a;b++,i++){
m[i]=a%b;//取a除以b的余数
}//每个a,都要不断的除以b+1.直到b+1等于a
Arrays.sort(m);//这是个数组整理方法,值被从小到大重新排列
if(m[0]!=0){ //余数最小的被排在m[0]的位置,所以等于0,就说明可以整除
System.out.println(a);}//把被除数a打印出来,然后跳出循环,进入a+1,逐次遍历到200
}
}

int[] m=new int[198];是设置一个数组 有198歌数字
for(int v=0;v<=197;v++){
m[v]=1;
}
循环198次 都等于1
for(a=3;a<=200;a++){
for(b=2,i=0;b<a;b++,i++){
m[i]=a%b;
}
根据这个条件判断素数
Arrays.sort(m);是将数组m排序
if(m[0]!=0){
System.out.println(a);}
}
就是不等于0的就是素数 就输出

写的人蛋疼啊
for(a=3;a<=200;a++){
for(b=2,i=0;b<a;b++,i++){
m[i]=a%b;
}
和a=200;
for(b=2,i=0; b<a; b++,i++)
m[i] = a%b;
有什么区别?

首先 输出2
然后 第一个for循环 是 给m数组 赋值
第二个for 循环 3 - 200
第三个for 判断 a和b取余赋值给m的i
然后 判断m数组 如果不等于0 就输出~~~

输出2到200之间的所有素数~

在“ if(a==1)
printf("%d
",i);”后面加上a=1;
记得运行完要把a重新初始化为1,否则再次循环时即使这个数不能被任何数除尽,a仍然为0,不会执行printf语句

public static void main(String[] args) { int primeNumber = 0; for(int i = 100 ;i 1;j--){//n除以每个比n小比1大的自然数 if(i%j==0){//如果有能被整除的,则不是质数 isPrime=false; } } if(isPrime){//如果是质数,则打印出来 System.out.print( i + " "); primeNumber++;//记录质数的个数 if(primeNumber%10==0){ //输出10个质数后换行 System.out.println(); } } } }

哪位大侠帮忙解释一下这个java程序:输出2到200之间的所有素数。完全看不...
答:import java.util.*;public class Ex4_5 { public static void main(String[] args) { // TODO code application logic here int a,b,i;a=3;b=2;i=0;int[] m=new int[198];//定义一个长为198的数组,因为这个程序的意思是最大的200要分别除 //以2-199,所以需要198个位置来记录计...

java问题:哪位大侠帮忙解释下数据库操作里面的StatementCallback是...
答:StatementCallback访问数据库 JdbcTemplate对数据库访问包装,持久化操作更简单,但降低了访问的灵活性,而通过回调接口的使用,可弥补此损失.通过StatementCallback接口,可获得JdbcTemplate的Statement回调,使用原生的SQL命令,此时,同样可利用JdbcTemplate提供的系列优点,如一致的异常体系.StatementCallback回调接口只有...

JAVA中文是什么意思
答:JAVA中文意思是:计算机编程语言。Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。任职于...

JAVA是什么意思?
答:(1)Easy:Java的语法比C++的相对简单,另一个方面就是Java能使软件在很小的机器上运行,基础解释其和类库的支持的大小约为40kb,增加基本的标准库和线程支持的内存需要增加125kb。 (2)分布式:Java带有很强大的TCP/IP协议族的例程库,Java应用程序能够通过URL来穿过网络来访问远程对象,由于servlet机制的出现,使Java编程...

...结果怎么是五个1四个3三个5呢? 请各位大侠帮忙解释一下
答:第一次运行int k= ++i;++i后i就等于1了,然后把1赋值给k;1<10满足while的循环条件,然后k+=2的话实际上等于k=k+2;现在k=3打印出1,继续循环判断,3<10满足条件k+=2之后k=5打印i;然后一直到k=11的时候不满足11<10这个循环条件然后跳出这个循环判断1<6的往下运行又执行到while循环里面。

求高手解释下这个 JAVA代码 是编写杨辉三角形的
答:角形。 在说说从int num = 1开始一直到k循环结束,本来一个三角形 有i和j 的循环完全足以。多加个k循环是要将每行的所有列进行计算并得到sum ,至于 num = num * (i - k) / (k + 1)的结果 我想作者是根据要求写这么样一个 公式的 完全就是一个数学问题了,那么我就需要知道 他要求每...

java中的输入输出流怎么好理解?请各位大侠说的仔细明白一点。我一直搞...
答:我用非专业的语言给你解释!要想让java接收你输入的东西。java必须有能接收你的能力。这个东西就是输入流。就像是小溪一样,水流入到河流中。比如,你输入的字符串,以流的方式流入到java中。这是手动输入字符串。关于文件的输入,同理。java要读取文件,这个文件会以流的方式流入到java中,然后java...

谁来解释一下这个JAVA程序。。。
答:我把程序简单改了一下,你看看输出,可能会帮助你理解:)public class E { public static void main(String args[]) { char c = '\0';for (int i = 1; i <= 4; i++) { switch (i) { case 1:c = 'b';System.out.println(c+" i="+i);//这里,输出当前i的值,i可以理解位第...

一段有意思的java代码请大家解释~
答:原理很简单,因为在java中,int是占4个字节大小,double占8个字节的大小,当你把某变量乘以2的时候,在计算机里面的处理方式是左移一位。当使用浮点数进行乘法运算时,若结果很大,会以科学计数法表示。下面具体分析:1、表达式0x7FFFFFFF == (int)(0x7FFFFFFF * 2.0)0x7FFFFFFF 已经占了4个...

最近看到一个java程序,其中有一个方法的参数是 类名.class,不知道是什么...
答:这说明参数类型是Class类型 很正常 每一个类都有一个class成员,代表该类唯一的Class实例