正在学习 C 并认为Project Euler问题将是一种有趣且有趣的学习方式(并且会用 1 块石头杀死 2 只鸟,因为它也会让我思考数学)但我遇到了障碍。
我有(我认为是)一个很好的(如果简单的话)算法来找到一个数字的最大素数。它有效(据我测试),但 PE 问题使用 600851475143 作为最后一个问题。我曾尝试使用双精度数等,但我似乎永远找不到模数和除法运算符。任何帮助将不胜感激。
附加的代码是在我开始使用双打(或任何其他类型)之前:
#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;}
}