需求:求出1-100以内的所有质数,并统计所有质数的个数。
完整代码如下:
public class ExceriseDemo {
public static void main(String[] args) {
int count = 0;
for (int i = 1; i <= 100; i++) {
boolean flag = true;
for (int j = 2; j < i; j++)
{
if(i % j == 0)
{
flag = false;
break;
}
}
if(flag)
{
System.out.println("当前数字" + i+"是质数!");
count++;
}
else
{
System.out.println("当前数字" + i + "不是质数!");
}
}
System.out.println("一共有"+count+"个质数!");
}
}
分析:首先先明白质数的概,只能被1和自身整除的数称之为质数(素数);规定1为质数,所以我们在循时候从2开始就行,从1开始没有意义。
我们可以先不从一个范围,而是从一个具体的数开始判断它是不是质数,比如10,那我们大致可以写下面这样一个循环
boolean flag = true;
int i = 10;
for (int j = 2; j < 10; j++)
{
if(i % j == 0)
{
flag = false;
break;
}
}
if(flag)
{
System.out.println("当前数字" + i+"是质数!");
count++;
}
else
{
System.out.println("当前数字" + i + "不是质数!");
}
这个就是判断单独的一个数字10是不是质数的一个循环,当然我们肯定是要从2开始,判断到9结束即可,因为到10本身肯定是满足条件的。有了单独的一个数字的循环,那我们就可以再写一个for循环去指定一个范围了。下面就是完整代码:
public class ExceriseDemo {
public static void main(String[] args) {
int count = 0;
for (int i = 1; i <= 100; i++) {
boolean flag = true;
for (int j = 2; j < i; j++)
{
if(i % j == 0)
{
flag = false;
break;
}
}
if(flag)
{
System.out.println("当前数字" + i+"是质数!");
count++;
}
else
{
System.out.println("当前数字" + i + "不是质数!");
}
}
System.out.println("一共有"+count+"个质数!");
}
}
分析:写一个循环,从1-100,并用count进行计数,当满足条件时,count就会在if(flag)那个语句体中加一进行计数。 简单分析一下,首先从1开始,进入内层循环,发现j > i,不满足for循环条件,跳出来,因为此时的flag的值是默认为true的,所以进了 if以后就输出1是质数;接着是2,同理,仍然是质数;再从3开始,此时就满足内层for循环的条件了,因为2 < 3,然后进if,3 %2≠0,跳出循环,输出3是质数;接着是4,进for,注意,4进入for的时候,j的值还是原来的2,而不是3,因为判断数字3之后时for就结束了。4 % 2 等于0,所以flag就是false,break结束循环,4不是质数,然后再是5,5 % 2不等于0,5 % 3 不等于0,5 % 4 不等于0,5是质数,依次类推......
整体的思路就是这样,如有错误,恳请指出改正!