parent
43949f66df
commit
3919984b53
@ -1,55 +0,0 @@ |
|||||||
#include <stdio.h> |
|
||||||
|
|
||||||
/*
|
|
||||||
The prime factors of 13195 are 5, 7, 13 and 29. |
|
||||||
|
|
||||||
What is the largest prime factor of the number 600851475143 ? |
|
||||||
|
|
||||||
https://projecteuler.net/problem=3
|
|
||||||
*/ |
|
||||||
int main(int argc,char**argv) { |
|
||||||
|
|
||||||
long primes[10000]; |
|
||||||
int primeCount=1; |
|
||||||
long primeVal=3; |
|
||||||
long highestPrime=1; |
|
||||||
primes[0]=2; |
|
||||||
long startingNumb=600851475143; |
|
||||||
label: |
|
||||||
while (startingNumb>1) { |
|
||||||
//find the next prime.
|
|
||||||
char isPrime=1; |
|
||||||
for (int i=0;i<primeCount;i++) { |
|
||||||
//first try all current primes.
|
|
||||||
if (startingNumb%primes[i]==0) { |
|
||||||
//It's divisible!
|
|
||||||
startingNumb/=primes[i]; |
|
||||||
printf(" Factor: %ld\n",primes[i]); |
|
||||||
if (highestPrime<primes[i]) { |
|
||||||
highestPrime=primes[i]; |
|
||||||
} |
|
||||||
goto label; |
|
||||||
} |
|
||||||
if (primeVal%primes[i]==0) { |
|
||||||
isPrime=0; |
|
||||||
} |
|
||||||
} |
|
||||||
if (isPrime) { |
|
||||||
primes[primeCount++]=primeVal; |
|
||||||
//printf("Generated a new prime: %ld\n",primeVal);
|
|
||||||
if (startingNumb%primeVal==0) { |
|
||||||
//It's divisible!
|
|
||||||
startingNumb/=primeVal; |
|
||||||
printf(" Factor: %ld\n",primeVal); |
|
||||||
if (highestPrime<primeVal) { |
|
||||||
highestPrime=primeVal; |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
primeVal++; |
|
||||||
} |
|
||||||
|
|
||||||
printf("Highest prime is %ld",highestPrime); |
|
||||||
|
|
||||||
return 0; |
|
||||||
} |
|
Loading…
Reference in new issue