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; }



LinkBack URL
About LinkBacks



