如何在斐波那契素数旁边打印文本通知



这是12年级计算机科学课的作业。

我遇到困难的作业部分如下:

  • 确定前20个斐波那契数中的哪一个是素数。

  • 在基本质询的打印输出中放入"this is a prime"文本通知

  • 将FibrePrimes存储在一个名为FibrePrimes的数组中。

以下是我尝试的:

在底部附近,我尝试制作一个循环,如果给定的FibNum元素等于一个FibPrime元素,则会打印文本通知"This is a prime"。这不起作用问题块用注释标识程序的其余部分还可以。

package fibonaccinumbers;
public class FibonacciNumbers {
public static void main(String[] args) {
// Creation of Fibonacci Numbers Array.
int [] FibNums = new int[20];
FibNums[0] = 0;
FibNums[1] = 1;
// Creation if Fibonacci Primes Array.
int [] FibPrimes = new int[7];
FibPrimes[0] =  2;
FibPrimes[1] =  3;
FibPrimes[2] =  5;
FibPrimes[3] =  13;
FibPrimes[4] =  89;
FibPrimes[5] =  233;
FibPrimes[6] =  1597;
// Printing first two fibonacci numbers.
System.out.println(0);
System.out.println(1 + "*");
// Printing remaining fibonacci numbers up to 20th term.
for (int i=2; i<FibNums.length;i++){ // Begin number generation loop.
FibNums[i] = FibNums[i-1] + FibNums[i-2];
// Checks if the fibonacci number is odd.
// A number is not odd if two divides into it evenly.
boolean oddcheck = true;
if (FibNums[i]%2==0){
oddcheck = false;
}
// Prints odd fibonacci numbers with a star beside it.
// Prints even fibonacci numbers with no star beside it.
if (oddcheck == true){
System.out.println(FibNums[i] + "*");
} else {
System.out.println(FibNums[i]);    
}
// PROBLEM BLOCK HERE. ************************
// If any element in the FibPrimes array is equal to the FibNums 
// array, then the number is a prime.
for (int n=0; n<=FibPrimes.length; n++){
if (FibNums[i] == FibPrimes[n]){
System.out.print(" " + "This is a prime.");
}
}

} // End number generation loop.
}
}

问题块已删除的输出:

0
1*
1*
2
3*
5*
8
13*
21*
34
55*
89*
144
233*
377*
610
987*
1597*
2584
4181*

(星星识别奇数-来自任务的不同部分)

剩余问题块的输出:

0
1*
1*

请注意,其余数字不打印,也没有文本通知。

可能有比我目前更好的方法来解决这个问题,但我会继续修改这一点。如果你需要更多信息,请告诉我。非常感谢。

谢谢@AJNeufeld和@YayPawSi。使用您的解决方案,我能够打印程序。修订输出:

0
1*
1*
This is a prime. 2
This is a prime. 3*
This is a prime. 5*
8
This is a prime. 13*
21*
34
55*
This is a prime. 89*
144
This is a prime. 233*
377*
610
987*
This is a prime. 1597*
2584
4181*

这是ArrayIndexOutOfBoundException,

//Remove = sign for n < FibPrimes.length
for (int n = 0; n < FibPrimes.length; n++){
if (FibNums[i] == FibPrimes[n]){
System.out.print(" " + "This is a prime.");
}
}

最新更新