//问题:代码中两个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+"个");
}
}
一:你的概念有问题。 质数(prime number)又称素数,有无限个。除了1和它本身以外不再有其他的因数。根据算术基本定理,每一个比1大的整数,要么本身是一个质数,要么可以写成一系列质数的乘积,最小的质数是2。
二:你的循环中,内层循环执行完成后, j++ 会再执行一次。
那么你下边判断‘素数’的条件就永远都是不相等的。
你的代码没有注释。。