Fibonacci Numbers Array & 另一个 Array 的副本,其元素可被 2 整除(Euler Prob 2),换出 null 元素
Fibonacci Numbers Array & another copy of Array whose elements are divisible by 2 (Euler Prob 2), swapping out null elements
此程序查找斐波那契数和另一组可被 2 整除的斐波那契数。
代码问题:我无法删除第二个数组的元素,即那些包含零或 null 的元素。
例如,以下示例输出包含不符合斐波那契数列条件的零。可以被 2 整除(即,在欧拉 2 问题的调用下):
Fib nos div by 2 except 0s:
0 2 0 0 8 0 0 34 0 0 144 0 0 610 0 0 2584 0 0 0
The output should be:
2 8 34 144 610 2584
代码:
import java.util.Scanner;
public class Fibonacci_Arrays {
public static void main(String[] args) {
int limit = 0;
Scanner scan = new Scanner(System.in);
//number of elements to generate in a series
System.out.println("Enter how many Fibonacci numbers to generate: " + "\n");
limit = scan.nextInt();
long[] series = new long[limit]; //contains all of the Fib nos. to limit specified.
//create first 2 series elements
series[0] = 0;
series[1] = 1;
long[] divSeries = new long[series.length]; //contains Fib nos. divisible by 2.
//create the Fibonacci series and store it in an array
for(int i=2; i < limit; i++){
series[i] = series[i-1] + series[i-2];
if ((series[i] % 2) == 0){
divSeries[i] = series[i];
//need to remove zero entries from the divSeries array.
}
}
//print the Fibonacci series numbers
System.out.println("Fibonacci Series upto " + limit);
for(int i=0; i< limit; i++){
System.out.print(series[i] + " ");
}
System.out.println();
//print the Euler Problem 2 series numbers
System.out.println("Fib nos div by 2 except 0s: ");
for(int i=0; i< limit; i++){
System.out.print(divSeries[i] + " ");
}
}
}
对 divseries 使用不同的迭代器
int j = 0; //for divseries
for(int i=2; i < limit; i++){
series[i] = series[i-1] + series[i-2];
if ((series[i] % 2) == 0){
divSeries[j] = series[i];
j++;
}
}
最好将divSeries 声明为ArrayList 来存储最终结果,因为Fibonacci 数被二整除的数未知。
因此,代码将是:
//Contain the Fibonacci number divisible by 2.
List<Long> divSeries = new ArrayList<>();
for(int i=2; i < limit; i++){
series[i] = series[i-1] + series[i-2];
if ((series[i] % 2) == 0){
divSeries.add(series[i]);
}
}
//To print the result
for(long i : divSeries)
System.out.print(i + " ");
不要删除它们,忽略它们:
for (long i : divSeries)
if (i > 0)
System.out.print(i + " ");
此程序查找斐波那契数和另一组可被 2 整除的斐波那契数。
代码问题:我无法删除第二个数组的元素,即那些包含零或 null 的元素。
例如,以下示例输出包含不符合斐波那契数列条件的零。可以被 2 整除(即,在欧拉 2 问题的调用下):
Fib nos div by 2 except 0s:
0 2 0 0 8 0 0 34 0 0 144 0 0 610 0 0 2584 0 0 0
The output should be:
2 8 34 144 610 2584
代码:
import java.util.Scanner;
public class Fibonacci_Arrays {
public static void main(String[] args) {
int limit = 0;
Scanner scan = new Scanner(System.in);
//number of elements to generate in a series
System.out.println("Enter how many Fibonacci numbers to generate: " + "\n");
limit = scan.nextInt();
long[] series = new long[limit]; //contains all of the Fib nos. to limit specified.
//create first 2 series elements
series[0] = 0;
series[1] = 1;
long[] divSeries = new long[series.length]; //contains Fib nos. divisible by 2.
//create the Fibonacci series and store it in an array
for(int i=2; i < limit; i++){
series[i] = series[i-1] + series[i-2];
if ((series[i] % 2) == 0){
divSeries[i] = series[i];
//need to remove zero entries from the divSeries array.
}
}
//print the Fibonacci series numbers
System.out.println("Fibonacci Series upto " + limit);
for(int i=0; i< limit; i++){
System.out.print(series[i] + " ");
}
System.out.println();
//print the Euler Problem 2 series numbers
System.out.println("Fib nos div by 2 except 0s: ");
for(int i=0; i< limit; i++){
System.out.print(divSeries[i] + " ");
}
}
}
对 divseries 使用不同的迭代器
int j = 0; //for divseries
for(int i=2; i < limit; i++){
series[i] = series[i-1] + series[i-2];
if ((series[i] % 2) == 0){
divSeries[j] = series[i];
j++;
}
}
最好将divSeries 声明为ArrayList 来存储最终结果,因为Fibonacci 数被二整除的数未知。
因此,代码将是:
//Contain the Fibonacci number divisible by 2.
List<Long> divSeries = new ArrayList<>();
for(int i=2; i < limit; i++){
series[i] = series[i-1] + series[i-2];
if ((series[i] % 2) == 0){
divSeries.add(series[i]);
}
}
//To print the result
for(long i : divSeries)
System.out.print(i + " ");
不要删除它们,忽略它们:
for (long i : divSeries)
if (i > 0)
System.out.print(i + " ");