注意: 解けてません
Problem 3

13195 の素因数は 5、7、13、29 である。

600851475143 の素因数のうち最大のものを求めよ。


プログラム
#include<stdio.h>

void main(void){
long x = 600851475143; // この大きい数字の扱い方が分からん
int num;
int max_num = 0;
printf("Q3:600851475143 の素因数のうち最大のもの\n");

// ココ以下も充分ではない
for(num = 2; num < x/2; num++){ // x/2以上の数字では割り切れないのでx/2まで
if(x % num == 0) max_num = num; // xがnumで割り切れたら、numをmax_numへ
}

printf("%d\n\n",max_num);
}

結果
Q3:600851475143 の素因数のうち最大のもの
0

600851475143・・・long long型が使えない環境では、どうすればいいんでしょうか

Problem 2

フィボナッチ数列の項は前の2つの項の和である。 最初の2項を 1, 2 とすれば、最初の10項は以下の通りである。


  1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...


数列の項が400万を超えない範囲で、偶数の項の総和を求めよ。


プログラム
#include<stdio.h>

void main(void){
int bef = 1;
int aft = 2;
int temp;
int sum = 0;
printf("Q2:フィボナッチ数列の項が400万を超えない範囲で、偶数の項の総和\n");
while(aft < 4000000){
if(aft % 2 == 0) sum += aft; // aftが奇数のときsumにaftを加える
temp = bef;
bef = aft;
aft = temp + aft;
}

printf("%d\n",sum);
}

結果
Q2:フィボナッチ数列の項が400万を超えない範囲で、偶数の項の総和
4613732

Problem 1

10未満の自然数のうち、3 もしくは 5 の倍数になっているものは 3, 5, 6, 9 の4つがあり、 これらの合計は 23 になる。

同じようにして、1,000 未満の 3 か 5 の倍数になっている数字の合計を求めよ。


プログラム

#include<stdio.h>

void main(void){
int num;
int sum = 0;

printf("Q1:1,000 未満の 3 か 5 の倍数になっている数字の合計は\n");

for(num=1; num<1000; num++){
if(num % 3 == 0 || num % 5 == 0){ // numが3か5で割り切れるとき
sum += num; // sumにnumを加える
}
}

printf("%d\n",sum);

}

結果

Q1:1,000 未満の 3 か 5 の倍数になっている数字の合計は
233168