C を学んでいて、Project Eulerの問題は楽しくて興味深い学習方法だと思っていました (数学についても考えさせられるので、1 石で 2 羽の鳥を殺すことになるでしょう) が、思わぬ障害にぶつかりました。
私は(私が思うに)数の最大の素因数を見つけるための(単純であれば)良いアルゴリズムを持っています。(私がテストした限り)動作しますが、PE の質問は最後の質問として 600851475143 を使用します。double などを使用しようとしましたが、モジュロ演算子と除算演算子の両方を見つけることができないようです。どんな助けでも大歓迎です。
添付のコードは、double (またはその他の型) で動作するようにする前のものです。
#include<stdio.h>
#include <math.h>
void main() {
int target, divisor, answer;
target = 375;
divisor = 2;
answer = -1;
answer = factorise (target,divisor);
printf("Answer to Euler Problem 3: %i\n", answer);
}
int factorise(number, divisor) {
int div;
while (divisor < number) {
div = divide(number,divisor);
if (div) {number = div;}
else {divisor++;}
}
return divisor;
}
int divide(a,b) {
if (a%b) {return 0;}
else {return a/b;}
}