Изучение C и мысль о том, что проблемы будут интересным и интересным способом узнать (и убьют двух птиц одним камнем, потому что это заставило бы меня задуматься и о математике), но я «Я попал в ловушку.Как разделить глупо большие числа в C
У меня есть (что я думаю) хороший (если простой) алгоритм для нахождения наибольшего простого множителя числа. Он работает (насколько я его протестировал), но вопрос 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;}
}
Посмотрите на связанный с этим вопрос: http://stackoverflow.com/questions/1384160/calculating-factorial-of-large-numbers-in-c – nik
'long long long long' – khachik
Ну, длинный длинный будет отлично. 64 бит, около 9 x 10 18. – gnasher729