for循环的特殊格式问题

来源:4-9 Java循环语句之 for

wswzh0329

2016-03-01 22:02

//问题:代码中两个for循环省略了第一个表达式之后运行结果很奇怪,程序的语句是怎么走的?

package homework;

//求出0-100中质数的个数

public class IsZhiShu {


public static void main(String[] args) {

// TODO Auto-generated method stub

//声明两个变量zishu和sushu,分别代表质数和素数的个数

int zishu = 0;

int sushu = 0;

//i指代2-100的数,这里的i,j提出来是为了增大访问范围,后面输出是能访问到i

int i =2;

int j=2;

//遍历2-100的数

for(;i<=100;i++)           //????????????

{

//判断是否能被整除

for(;j<i;j++)           //???????????

{

//如果能被1和本身以外的数整除,则为质数,且zishu+1;

if(i%j==0)

{

System.out.println(i+"是质数");

zishu ++;

break;

}

}

//进行判断,如果跳出循环时j==i,则说明不存在能整除的数,是素数,sushu+1

if(j==i)

{

System.out.println(i+"是素数");

sushu++;

}

}

System.out.println("质数有"+zishu+"个");

System.out.println("素数有"+sushu+"个");

}


}


写回答 关注

2回答

  • Stick97
    2016-03-02 11:24:11
    一:你的概念有问题。  质数(prime number)又称素数,有无限个。除了1和它本身以外不再有其他的因数。根据算术基本定理,每一个比1大的整数,要么本身是一个质数,要么可以写成一系列质数的乘积,最小的质数是2。

    二:你的循环中,内层循环执行完成后, j++ 会再执行一次。

    那么你下边判断‘素数’的条件就永远都是不相等的。

    wswzh0...

    。。首先很感谢小伙伴来帮我解惑,指出了概念问题,小学数学没学好,哈哈哈;不过这不影响我的程序,程序中的zishu就指代有除了1和本身之外的因子的合数; 。。关于第二点,内循环的循环条件是j<i,j++之后退出循环刚好等于i; 。。还有,我的代码要是在两个for循环中分别加上i=2和j=2,输出的结果是对的,所以我问的仅仅是for的格式问题,思路虽然不是最佳(其实只要循环到i/2就可以了)但是并没有错误;

    2016-03-02 20:22:39

    共 1 条回复 >

  • 少女心就是我的style
    2016-03-01 22:28:01

    你的代码没有注释。。

    wswzh0...

    。。。谢谢提醒 那我去加点注释

    2016-03-01 22:30:49

    共 1 条回复 >

Java入门第一季(IDEA工具)升级版

0基础萌新入门第一课,从Java环境搭建、工具使用、基础语法开始

1165172 学习 · 17581 问题

查看课程

相似问题