Hi everyone, I'm taking my first C class this semester, and I'm kind of stuck on this assignment. We need to:

1) Ask the user for two positive integers

2) Compute and print out the largest common prime factor

I am able to get just the the largest common factor, but I'm stuck on how to get the largest *prime* factor. Right now, my code outputs a very large number, and I can't figure out why.

If anyone could offer some advice/help, I would really appreciate it!

Code:`#include<stdio.h>`

int main()

{

int x, y, z;

printf("Please enter two integers: \n");

scanf ("%d%d", &x, &y);

if(check(x) && check(y))

{

z = gcd(x, y);

if(z < 2)

printf("No common prime factor");

else

printf("Greatest Common Prime Factor of %d and %d is: %d\n",x,y,z);

}

else

{

printf("Negative numbers not allowed!");

}

return 0;

}

int gcd(int p, int q)

{

int r, greater, smaller;

if (p > q)

greater = p, smaller = q;

else

greater = q, smaller = p;

if(smaller == 0)

{

if(prime(greater))

{

return greater;

}

else

{

int a;

for(a = 2; a <= greater; a++)

{

if((greater % a) == 0)

{

greater /= a;

a = 1;

}

}

}

}

else

r = gcd(smaller, greater % smaller);

return r;

}

int prime(int greater)

{

int i, n, prime;

for(i = 3; i <= greater; i++){

prime = 1;

for(n = 2; n <= i - 1; n++){

if(i % n == 0){

prime = 0;

}

}

}

return prime;

}

int check(int x)

{

if(x > 0)

return 1;

else

return 0;

}