Так как университет закрыт и все экзамены отменены из-за Corona, я начал программировать простой алгоритм факторизации на C ++. Есть ли способ использовать большее число, чем unsigned long long int
? Но я должен быть в состоянии ввести число через терминал и рассчитать с ним.
Вот мой код:
#include <iostream>
#include <bits/stdc++.h>
unsigned long long int number = 1;
int main(int argc, char **argv)
{
while(1){
std::cout << "Please enter a number: ";
unsigned long long int counter = 2;
unsigned long long int root = 1;
int err = scanf("%llu",&number);
if(err != 1){
number = 1;
std::cerr << "NOPE" << std::endl;
return 1;
}else{
std::cout << "Prime factors of " << number << " are: "<< std::endl;
if(number < 2){
number = 1;
root = 1;
}else{
root = sqrt(number);
}
while(number != 1){
// If number % counter == 0, counter must be a prime factor!
if(number % counter == 0){
number = number / counter;
root = sqrt(number);
std::cout << counter << std::endl;
// If number is smaller than root it must be the last prim factor!
}else if(number < root || number < counter){
std::cout << number << std::endl;
break;
}else{
counter++;
}
}
}
}
return 0;
}