/* utility functions. See the comments above. */ static int32_t EulerPhi (int32_t n) { int32_t i; PFACTOR p[MAX_PFACTOR]; MYFLT result; if (n == 1) return 1; if (n == 0) return 0; memset(p, 0, sizeof(PFACTOR)*MAX_PFACTOR); /* for (i=0; i < MAX_PFACTOR; i++) { */ /* p[i].expon = 0; */ /* p[i].base = 0; */ /* } */ (void)PrimeFactors (n, p); result = (MYFLT) n; for (i = 0; i < MAX_PFACTOR; i++) { int32_t q = p[i].base; if (!q) break; result *= (FL(1.0) - FL(1.0) / (MYFLT) q); } return (int32_t) result; }
int main() { int a = 35324; PrimeFactors(a); return 0; }
void PrimeFactors(long long number){ long long i; if(number<2) return; else if(number>=2){ for(i=2; i<number+1;i++){ if(isPrime(i)){ if(number % i == 0){ printf("%lld ",i); PrimeFactors(number/i); return; } } } } }
void PrimeFactors(int num,vector<int> &factors) { int maxFactor = (int)(sqrt((double)num)+.001); for(int i=2; i<=maxFactor; i++) { // does i go into num evenly? if((num % i) == 0) { factors.push_back(i); PrimeFactors(num/i, factors); return; } } // if did not find any factors, it is a prime factors.push_back(num); }
int32_t EulerPhi (int32_t n) { int32_t i = 0; //int32_t pcount; MYFLT result; PFACTOR p[MAX_PFACTOR]; memset(p, 0, sizeof(PFACTOR)*MAX_PFACTOR); if (n == 1) return 1; if (n == 0) return 0; (void)PrimeFactors (n, p); result = (MYFLT)n; for (i = 0; i < MAX_PFACTOR; i++) { int32_t q = p[i].base; if (!q) break; result *= (FL(1.0) - FL(1.0) / (MYFLT) q); } return (int32_t) result; }
int main(){ long long number; puts("GIANCARLO M. GUERRA: PRIME FACTORS"); puts("=================================="); puts("Please press CTRL+D or CTRL+C to exit"); puts(""); while(1){ puts("Please enter a number: "); scanf("%lld",&number); PrimeFactors(number); printf("\n"); } }