Я создал программу, которая делит на простые числа число, полученное в качестве входных данных.Сначала я попытался скомпилировать с помощью 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, но она мне нужна для работы с большими числами.