Does anyone know how gmp works? It's supposedly installed but I don't know how to use the functions. I try following this site http://es-sun2.fernuni-hagen.de/cgi-bin/info2html?(gmp)Top but it doesn't compile when I try using the functions.

What I'm trying to do is factor a large number. Is there an mpz function for it? Or does anyone have another way? Thanks

## All 6 Replies

OK I can use the mpg a little now. I'm implementing RSA encryption. I'm still having a problem with factorization. I want to make a function for factoring.

OK I can use the mpg a little now. I'm implementing RSA encryption. I'm still having a problem with factorization. I want to make a function for factoring.

It's gmp not mpg. Does anyone have a good factoring algorithm or code at least. Mine's slow as hell for big numbers.

I'm replying to myself again lol, but just in case anyone's interested, I have a program here to find a factor of a number. It follows the Pollard rho algorithm. It seems to work for the most part. There are some problems. It has the error, Floating exception (core dumped), when a prime number is entered. But what I can't figure out is why it also has that error for some numbers that should factor, such as 9, 8, 15, 16, and 99.

``````#include <iostream>
#include <math.h>
using namespace std;

void factor(int n);
int gcd(int num1, int num2 );

int main()
{
int n;
cout<<"enter number to factor: ";
cin>>n;
factor(n);
return 0;
}

void factor(int n)
{
int g = 1;
int a = 2;
int b = 2;

int count = 10000000;

while(g == 1 && g != n)
{
a = (a*a + 2) % n;
b = (b*b + 2) % n;
b = (b*b + 2) % n;

g = gcd(abs(b-a), n);

ct--;
}
cout<<"count: "<<10000000-ct<<endl;
cout<<"factor: "<<g<<endl;
}

int gcd(int num1, int num2 )
{
int remainder = num2 % num1;
if ( remainder != 0 )
return gcd( remainder,num1 );

return num1;
}``````

If someone knows about gmp, I'm still not sure how to put that in use. I wanna work with some 40 digit numbers here. (I know I'm using int up there)

``````# include <iostream>
using namespace std;
int main ()
{
int n;
cout<<"enter the number:";
cin>>n;
cout<<"factors are:";
for(int i=1;i<=n;i++)
{
if (n%i==0)
cout<<i<<endl;
}
int q;
cin>>q;
return 0;
}``````

I hope this works

commented: After 5 years I doubt he will care. -7

By the way there is no need for
int q;
cin>>q;

remove it if you like

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.