第一题
3或5的倍数
在小于10的自然数中,3或5的倍数有3、5、6和9,这些数之和是23。
求小于1000的自然数中所有3或5的倍数之和。
#include<stdio.h>
int main()
{
int sum=0, i;
for (i = 0; i < 1000; i++)
{
if (i % 3 == 0 || i % 5 == 0)
{
sum += i;
}
}
printf("%d",sum);
return 0;
}
第二题·
偶斐波那契数
斐波那契数列中的每一项都是前两项的和。由1和2开始生成的斐波那契数列的前10项为:
1,2,3,5,8,13,21,34,55,89,…
考虑该斐波那契数列中不超过四百万的项,求其中为偶数的项之和。
#include<stdio.h>
int main()
int m = 1, n = 2;
int o = m + n;
int sum = 2;
while (o < 4000000)
{
if (o % 2 == 0)
{
sum += o;
}
m = n;
n = o;
o = m + n;
}
printf("%d",sum);
return 0;
}
第三题
最大质因数
13195的质因数包括5、7、13和29。
600851475143的最大质因数是多少?
#include<stdio.h>
int main()
{
int a, n,t =1;
int y = 0;
int x[100];
//a为需要判断的数
scanf_s("%d",&a);
for (int i = 1; i < a; i++)
{
if (a % i == 0)//判断因数 i为因数
{
for (int z = 2; z < i/2; z++)
{
t = 1;
if (i % z == 0)
{
t = 0;
}
}
if (t == 1)
{
n = i;
}
}
}
printf("%d",n);
return 0;
}
第四题
最大回文乘积
回文数是指从前往后读和从后往前读都一样的数。由两个2位数相乘得到的回文数中,最大的是 9009=91×99。
求最大的由两个3位数相乘得到的回文数。
#include<stdio.h>
#include<math.h>
int HuiWen(int m, int n)
{
int t = m * n;
int i = 0,a[10];
int x = t, y;
int max;
while (t > 0)//判断t的位数
{
a[i] = t % 10;
i++;
t /= 10;
}
y = i;
if (t % 2 == 0)//偶数
{
while (x > 0)
{
if (x / pow(10, i) == x % 10)
{
int w = pow(10, t);
x = x % w / 10;
i -= 2;
}
}
if (i == 0)
{
max = t;
}
}
if (t % 2 != 0)//偶数
{
while (x > 10)
{
if (x / pow(10, i) == x % 10)
{
int w = pow(10, t);
x = x % w / 10;
i -= 2;
}
}
if (i == 1)
{
max = t;
}
}
printf("%d",t);
return t;
}
int main()
{
for(int m=0;m<100)
}
第五题