Since the University is closed and all exams are cancelled due to Corona, I started programming a prime factorization algorithm in C++. Is there a way to use bigger numbers than unsigned long long int
? But I must be able to input the number via terminal and calculate with it.
Here is my code so far:
#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;
}