gpt4 book ai didi

java - java中偶数位置应该有斐波那契,奇数位置应该有素数

转载 作者:行者123 更新时间:2023-12-01 23:39:38 25 4
gpt4 key购买 nike

import java.util.Scanner;

public class Nthterm {

int k;

public int fibonacci(int n) {
int a = 0, b = 1, c;

if (n == 0) {
return b;
}


for (int i = 0; i <= n / 2; i++) {
c = a + b;
a = b;
b = c;
}

return b;
}

public int prime(int n) {
int result = 0;
boolean isprime = true;
for (int j = 2; j < n; j++) {
if (n % j == 0) {
isprime = false;
}

}
if (isprime) {
result = n;
}

return result;

}

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("ENTER:");
int k = sc.nextInt();
Nthterm fib = new Nthterm();

int[] arr1 = new int[k + 1];

for (int n = 0; n <= k; n++) {

if (n % 2 == 0) {
arr1[n] = fib.fibonacci(n);
} else {
arr1[n] = fib.prime(n);

}

}
for (int element: arr1) {
System.out.println(element);
}
}
}

我写了一个代码,如果n是偶数,它会调用斐波那契,如果n是奇数,它会素数函数并将其存储在数组中。

但是 Prime 函数在第 9 个位置给出错误。

输出:

ENTER: 10 1 1 2 3 3 5 5 7 8 0 13

如何编写素数函数来填充奇数位置?

最佳答案

您的 prime(int n) 方法应返回第 n 个质数。相反,如果 n 是素数,则返回 n;如果 n 不是素数,则返回 0。因此,当您将 9 传递给它时,它会返回 0,因为 9 不是素数。

似乎在每次连续调用 prime() 时,您都希望获得下一个素数。因此,您可以更改 prime() 以返回下一个大于 n 的质数:

public int nextPrime(int n0) {
int n = n0 + 1;
boolean isPrime = false;
while (!isPrime) {
isPrime = true;
for(int j = 2; j < n;j++) {
if (n % j == 0) {
isPrime = false;
n++;
break;
}
}
}
return n;
}

现在,而不是调用:

arr1[n]=fib.prime(n)

您应该调用:

arr1[n]= n < 2 ? fib.nextPrime(0) : fib.nextPrime(arr1[n-2]);

关于java - java中偶数位置应该有斐波那契,奇数位置应该有素数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58266697/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com