Есть ли умный способ использовать большие числа в C ++ - PullRequest
0 голосов
/ 17 марта 2020

Так как университет закрыт и все экзамены отменены из-за 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;
}

Ответы [ 3 ]

1 голос
/ 17 марта 2020

GMP - это высокопроизводительная библиотека для целочисленной математики произвольной точности в C, которая также может использоваться в C ++. Существует функция преобразования строк, которая позволит вам принимать ввод от терминала или других источников строк.

https://gmplib.org/

Вопросы по использованию GMP для простой факторизации уже существует и в переполнении стека:)

1 голос
/ 17 марта 2020

Может быть повысить мульти-точность библиотека?

0 голосов
/ 17 марта 2020

Привет, если вы хотите понять и создать хороший код для этого, вы должны изучить очень важный Math topi c "Теория чисел". Хорошая книга может быть Крафт, Вашингтонская . Проверьте это и изучите, и вы увидите, что благодаря базовому представлению и теории чисел, некоторые исчисления будут более эффективными и более легкими.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...