//判断101—200间有多少个素数(素数除了1和本身没有其他除数)
1.直接除以 2 到 本身减一
//判断101—200间有多少个素数(素数除了1和本身没有其他除数)
public class Demo {
public static void main(String[] args) {
//1.思路,让101除以2-100,让102除以2-101,...看取余是否为零
//left表示余数为零的个数,num记录有几个素数
int left = 0, num = 0;
for (int i = 101; i <= 200; i++) {
for (int j = 2; j < i; j++) {
if (i % j == 0) {
left++;
}
}
//余数left==0则表示从2到 本身-1 没有一个能除尽,则此数为质数
if (left == 0) {
System.out.print(i + ",");
num++;
}
//第一次循环结束此时left要归零,进而继续进行循环
left = 0;
}
System.out.println();
System.out.print("共有" + num + "个素数");
}
}
2,如果一个数的约数在其开平方的右边 则必然会存在一个约数在其开平方的左边 所以判断一个数是否为质数 只需要观察在 2 到 开平方数 中间是否含有约数即可
用了Math方法
//判断101—200间有多少个素数(素数除了1和本身没有其他除数)
//如果一个数的约数在其开平方的右边 则必然会存在一个约数在其开平方的左边 所以判断一个数是否为质数 只需要观察在 2 到 开平方数 中间是否含有约数即可
public class Demo {
public static void main(String[] args) {
//用平方根来减少代码运行时间,及101除以2,101除以3...到101除以【101平方根】,后续同理
//left表示余数为零的个数,num记录有几个素数
int left = 0, num = 0;
//注意循环变量是整数,所以开平方后要强制转换。
for (int i = 101; i <= 200; i++) {
for (int j = 2; j <= (int) Math.sqrt(i); j++) {
if (i % j == 0) {
left++;
}
}
//余数left==0则表示从2到平方根没有一个能除尽,则此数为质数
if (left == 0) {
System.out.print(i + ",");
num++;
}
//第一次循环结束此时left要归零来表示余数为零个数
left = 0;
}
System.out.println();
System.out.print("共有" + num + "个素数");
}
}