有一个数组1,2,3后面的数字等于前面2数字的和,
如 3=1+2;
5=2+3;
8 =5+3;
13=5+8;
现在计算1,2,3,4,5,8,13,21,34,55,89,.....,300万数组中偶数的总和。
说思路啥的也行。
这个叫斐波那契数列吧,求其中的偶数这个数也够大的。
long a[3000000];
a[0] = 1;a[1]=2;
for循环
偶数加
这样会不会炸。
前面的数组应该是这样的吧
1,2,3,5,8,13,21,34,55,89^300万吧
要注意从第三个元素开始才是满足这个条件的
可以先把1-300万这300万个数筛选出这个数组,再根据数组中每个元素是否满足指数条件。
一个for循环两个if 判断 即可
这个过程中,重要的是要找到全局变量的规律
具体实现:
for i in (1-300万数组)
if 数组[2]=数组【1】+数组【0】
if 数组2==质数
sum =sum+数组【2】
print sum
重新来答一下。
#include"iostream"
using namespace std;
int main()
{
long tmp=0,sum=0,i = 1,j=2;
while(i<=3000000)
{
tmp = i+j;
cout<<tmp<<"\t";
i = j;
j = tmp;
if(i%2==0)
sum+=tmp;
}
cout<<sum;
}
求采纳(^U^)ノ~YO
试了一下,好像没问题
package mathDemo;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;
public class IncreasingArray {
static List<Integer> list = new ArrayList<>();
public static List<Integer> initArray(int n) {
while (list.get(list.size() - 1) <= n) {
list.add(list.get(list.size() - 1) + list.get(list.size() -2));
}
return list;
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("i: ");
int i = in.nextInt();
int sum = 0;
list.add(1);
list.add(2);
initArray(i);
list.remove(list.size() - 1);
Iterator<Integer> iterator = list.iterator();
while (iterator.hasNext()) {
int index = iterator.next();
if (index%2 == 0) {
System.out.println("even number: " + index);
sum += index;
} else {
System.out.println("odd number: " + index);
}
}
System.out.print("sum = " + sum);
}
}
简单粗暴,递归调用实现斐波那契数列,求和除以二即可
这么简单的问题,都被你们搞复杂了, 不说了,上代码,
public class TestRecursion {
private static long count = 0 ;
public static void main(String[] args) {
//循环的得到数,并求出
long sum = getSum(1, 2);
System.out.println(sum);
}
private static long getSum(long i, long j) {
//System.out.println("此时第一个数的值是:"+i+", 此时第二个数的值是:"+j);
//求每一个数
if(i%2==0){
count +=i;
System.out.println(i);
}
if(j<3000000){
long num1 = j ;
long num2 =i+j;
getSum(num1, num2);
}
return count;
}
}
很明显,人家出这个题,考察的是你的观察能力
规律:1 2 之后的数据,都是2奇数1偶数,2奇数和 等于 1偶数
偶数和 等于 2 加上 3到300万之和除以2
1到300万是一个相差1的等差数列
最后结果:30000001*300/2-1 = 450000149
我算错了一步,不好意思
上面答案是错的
人家出这个题,考察的是你的观察能力
规律:1 2 之后的数据,都是2奇数1偶数,2奇数和 等于 1偶数
偶数和 等于 1到300万这个斐波那契数列之和 除以2,最后减1
直接给你代码吧,手残5分钟写的,着急了
#以下内容为python实现
f = [1,2]
o = []
sum = 2
for n in range(2,3000000):
a = f[n-1]+f[n-2]
if a <=3000000:
if a%2==0:
o +=[a]
f += [a]
else:break
for oc in o:
sum = sum+oc
print(f)
print(o)
print(sum)
输出结果分别是
1、1-300万中满足斐波那契数列的数组
[1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229, 832040, 1346269, 2178309]
2、1-300万中满足斐波那契额数列的数组除了2其他的偶数
[8, 34, 144, 610, 2584, 10946, 46368, 196418, 832040]
3、题中求和结果
1089154
python实现-精简版
i=1;j=2;sum=0
while i<3000000:
if j%2==0 and j<3000000:
sum=sum+j
(i,j)=(j,i+j)
print(sum)
答案是:450万。。。。
奇数和 = 偶数数
s(300万-2) = s(300万)
结果是 300万+ 150万=450万