Проблема со всеми идами компиляторов, использующих библиотеку ttmath (c ++) - PullRequest
0 голосов
/ 19 декабря 2018

Я создал программу, которая делит на простые числа число, полученное в качестве входных данных.Сначала я попытался скомпилировать с помощью dev c ++, и он выдал следующие ошибки:

Error: operand type mismatch for `movq`
Error: incorrect register `%edx' used with `q' suffix

Netbeans выдает следующее:

cd 'C:\Users\Frank\Desktop\Riemann\Riemann'
C:\cygwin64\bin\make.exe -f Makefile CONF=Release
"/usr/bin/make" -f nbproject/Makefile-Release.mk QMAKE= SUBPROJECTS= .build-conf
make[1]: Entering directory '/cygdrive/c/Users/Frank/Desktop/Riemann/Riemann'
"/usr/bin/make"  -f nbproject/Makefile-Release.mk dist/Release/Cygwin_1-Windows/riemann.exe
make[2]: Entering directory '/cygdrive/c/Users/Frank/Desktop/Riemann/Riemann'
make[2]: *** No rule to make target '../../ttmath-0.9.3/ttmath/ttmathuint_x86_64_msvc.asm', needed by 'build/Release/Cygwin_1-Windows/_ext/88761bfc/ttmathuint_x86_64_msvc.o'.  Stop.
make[2]: Leaving directory '/cygdrive/c/Users/Frank/Desktop/Riemann/Riemann'
make[1]: *** [nbproject/Makefile-Release.mk:60: .build-conf] Error 2
make[1]: Leaving directory '/cygdrive/c/Users/Frank/Desktop/Riemann/Riemann'
make: *** [nbproject/Makefile-impl.mk:40: .build-impl] Error 2
BUILD FAILED (exit value 2, total time: 657ms)

Это мой исходный файл:

#include "ttmath.h"
#include "sstream"
#include "iostream"
using namespace std;

//Prototipi:
string inttostr(ttmath::Int<1024*1024> toCast);
void FattorNumPrimi(ttmath::Int<1024*1024> n);

int main()
{
    ttmath::Int<1024*1024> n;
    cout<<"Choose your number: ";
    cin>>n; 
    FattorNumPrimi(n);
    cout<<endl;
    system("pause");
    return 0;
}

//Funzioni:
string inttostr(ttmath::Int<1024*1024> toCast)
{
    ostringstream converter;
    converter.seekp(0);
    converter <<toCast;
    return converter.str();
}

void FattorNumPrimi(ttmath::Int<1024*1024> n)
{
    string prec="This is your number's factorization: "+inttostr(1);
    //unsigned long long int i=0;
    //unsigned long long int j=0;
    int x;
        ttmath::Int<1024*1024> h=(1/2);//exponent for the pow function

        for (ttmath::Int<1024*1024> s=2; s<=n; s++)
        { 
           for (ttmath::Int<1024*1024> t=2; t*t<=s; t++)
           { x=0;
               if (s % t == 0)
               {
                   break;
                }else if (t+1 > s.Pow(h)) {

               while(x!=1)
               {   
                   if(n%2==0&&n!=0)//Added because the prime number generation skips 2 and 3
                   {
                      n=n/2;                  
                      prec=prec+" x "+inttostr(2);
                   }else if(n%3==0&&n!=0)//Added because the prime number generation skips 2 and 3
                   {
                      n=n/3;                  
                      prec=prec+" x "+inttostr(3);
                   }else if(n%s==0&&n!=0)//If n can be divided by the prime number
                   {
                      n=n/s;                  
                      prec=prec+" x "+inttostr(s);
                   if(n==s)//If n is equal to the current prime number
                   {
                      prec=prec+" x "+inttostr(n);
                      n=0;
                   }                                  
                   }else
                   {
                     x=1;
                   }     
               }
            }
        }
    }
        cout<<prec;
}

Visual studio тоже не компилируется.

ps: программа работает, если я использую unsigned long long int и не включаю библиотеку ttmath, но она мне нужна для работы с большими числами.

...