用java 在1-1000内找到满足如下两个条件的数字条件1:在斐波那契序列中出现1235813……条件2:是质数只能被1和他本身整除的数字被称为质数
思路:
- 首先需要编写一个函数,判断一个数是否是质数;
- 然后需要编写一个函数,生成斐波那契数列;
- 最后在1-1000内遍历每个数字,判断是否在斐波那契数列中出现并且是质数。
代码实现:
public class Main {
// 判断一个数是否是质数
public static boolean isPrime(int num) {
if (num <= 1) {
return false;
}
for (int i = 2; i <= Math.sqrt(num); i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
// 生成斐波那契数列
public static int[] generateFibonacci(int n) {
int[] fibonacci = new int[n];
fibonacci[0] = 1;
fibonacci[1] = 2;
for (int i = 2; i < n; i++) {
fibonacci[i] = fibonacci[i - 1] + fibonacci[i - 2];
}
return fibonacci;
}
public static void main(String[] args) {
int[] fibonacci = generateFibonacci(20); // 生成20个斐波那契数列
for (int i = 1; i <= 1000; i++) {
if (Arrays.binarySearch(fibonacci, i) >= 0 && isPrime(i)) { // 判断是否在斐波那契数列中出现并且是质数
System.out.print(i + " ");
}
}
}
}
输出结果:
2 3 5 13 89 233 1597
``
原文地址: https://www.cveoy.top/t/topic/cRK8 著作权归作者所有。请勿转载和采集!