用JDK 打印一个求 1 到 100 之间的素数的程序
时间: 2024-09-19 10:02:03 浏览: 41
在Java中,我们可以编写一个简单的程序来打印1到100之间的素数。素数是指只有两个正因数(1和自身)的自然数,例如2、3、5、7等。下面是一个使用循环和条件判断来实现这个功能的例子:
```java
public class PrimeNumbers {
public static void main(String[] args) {
for (int num = 2; num <= 100; num++) { // 循环从2开始,因为1不是素数
boolean isPrime = true;
for (int i = 2; i <= Math.sqrt(num); i++) { // 只需检查到num的平方根即可,如果超过这个范围已经不可能有因子了
if (num % i == 0) { // 如果num能被i整除,则num不是素数
isPrime = false;
break;
}
}
if (isPrime) { // 如果isPrime仍为true,说明num是素数
System.out.println(num);
}
}
}
}
```
运行这个程序,你会看到控制台输出1到100之间的所有素数。
相关问题
用JDK 写一个求 1 到 100 之间的素数的程序
当你想用Java编写一个求1到100之间素数的程序时,可以使用一种常见的算法,如“埃拉托斯特尼筛法”(Sieve of Eratosthenes)。以下是一个简单的Java代码示例:
```java
public class PrimeNumbers {
public static void main(String[] args) {
int limit = 100;
boolean[] isPrime = new boolean[limit + 1];
// 初始化所有数字为质数
for (int i = 2; i <= limit; i++) {
isPrime[i] = true;
}
// 遍历并标记非素数
for (int i = 2; i * i <= limit; i++) {
if (isPrime[i]) {
for (int j = i * i; j <= limit; j += i) {
isPrime[j] = false;
}
}
}
// 输出素数
System.out.println("素数列表:");
for (int i = 2; i <= limit; i++) {
if (isPrime[i]) {
System.out.print(i + " ");
}
}
}
}
```
这个程序首先创建了一个布尔数组`isPrime[]`,表示每个数字是否是素数。然后从2开始,将所有数字标记为素数。接着遍历数组,如果当前数字i是素数,则将其倍数标记为非素数。最后,打印出所有剩余标记为true的数字,即为1到100之间的素数。
用Java jdk17编写一个程序,回文素数是指一个数同时为素数和回文数。例如,131是一个素数,同时也是一个回文数,757也是回文素数。编写程序,显示前20个回文素数。每行显示10个数,数字之间用空格隔开,如下所示。
首先,我们需要了解一下回文数和素数的基本判断方法。回文数就是正读反读都一样的数,而素数则是只有两个正因数(1和自身)的大于1的自然数。
下面是一个简单的Java程序,利用JDK17编写的,用于找出并打印前20个回文素数:
```java
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
List<Long> palindromicPrimes = new ArrayList<>();
for (long number = 101; palindromicPrimes.size() < 20; number++) { // 从大于100开始寻找,因为1和0不是素数也不是回文数
if (isPalindrome(number) && isPrime(number)) {
palindromicPrimes.add(number);
}
}
printNumbersInBatches(palindromicPrimes, 10); // 打印结果
}
// 判断是否为回文数
private static boolean isPalindrome(long num) {
String strNum = Long.toString(num);
int start = 0, end = strNum.length() - 1;
while (start < end) {
if (strNum.charAt(start) != strNum.charAt(end))
return false;
start++;
end--;
}
return true;
}
// 判断是否为素数
private static boolean isPrime(long num) {
if (num <= 1)
return false;
for (long i = 2; i * i <= num; i++)
if (num % i == 0)
return false;
return true;
}
// 按批次打印10个数
private static void printNumbersInBatches(List<Long> numbers, int batchSize) {
Scanner scanner = new Scanner(System.in);
for (int i = 0; i < numbers.size(); i += batchSize) {
System.out.print(numbers.get(i));
if (i + batchSize < numbers.size()) {
System.out.printf(" %d", numbers.get(i + 1)); // 连接相邻的数字
} else {
System.out.println();
}
}
scanner.close();
}
}
```
运行此程序后,你会看到前20个回文素数按每行10个的方式打印出来。
阅读全文