1. 3或5的倍数
在小于10的自然数中,3或5的倍数有3、5、 6和9,这些数之和是23。求小于1000的自然数中所有3或5的倍数之和。
解题思路
遍历1-999,是3或5的倍数相加
#include<iostream>
using namespace std;
int main()
{
int sum=0;
for(int i=1;i<1000;i++)
{
if(i%3==0||i%5==0)
sum+=i;
}
cout<<sum;
}
2.偶斐波那契数
斐波那契数列中的每一项都是前两项的和。由1和2开始生成的斐波那契数列的前10项为:
1, 2,3, 5,8, 13,21, 34, 55, 89....
考虑该斐波那契数列中不超过四百万的项,求其中为偶数的项之和。
解题思路
每一项都是前两项的和,小于4000000条件下循环,先判断偶数项,是则相加,b=b+a,a=b-a
#include<iostream>
using namespace std;
int main()
{
int a = 1, b = 2, sum = 0;
while (b < 4000000)
{
if (b % 2 == 0) sum += b;
b += a;
a = b - a;
}
cout << sum;
}
3.最大质因数
13195的质因数包括5、7、 13和29。600851475143的最大质因数是多少?
解题思路
遍历2-600851475143,判断次数是否是题目所给数的因数,再判断是否为质数
#include <iostream>
using namespace std;
bool isPrime(long long x)
{
for (long long i = 2; i * i < x;i++)
{
if (x % i == 0) return false;
}
return true;
}
int main()
{
long long x = 600851475143;
for (long long i = 2; i <= x; i++)
{
if (x % i == 0 && isPrime(x / i))
{
cout << x / i << endl;
break;
}
}
return 0;
}