Я изучаю C и думаю, что Project Euler проблемы будут забавным и интересным способом изучения (и они убьют 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;}
}