c# - Program Hangs while executing -
i having problem program executes , hangs somewhere during execution. want know causes this.
for (long = maxnumber; > 2; i--) { isprime = true; (long g = 2; g < i; g++) { long temp = % g; if (temp == 0) { isprime = false; break; } } if (isprime == true) { largestprimefactor = i; break; } }
if tried correctly, code trying find largest prime between 0 , maxnumber. use sieve of eratosthenes finding prime numbers between 0 , square root of maxnumber. then, can iterate maxnumber 0 number indivisible of prime numbers you've found.
edit : tried this
var sqrtmax = (int)math.sqrt(maxnumber); var primecandidates = enumerable.range(2, sqrtmax-1) .todictionary(number => number, iscomposite => false); foreach (var number in primecandidates.keys.toarray()) { if (primecandidates[number]) { continue; } parallel.foreach(enumerable.range(2, sqrtmax / number - 1).select(times => number * times),multiples=> primecandidates[multiples] = true); } var primelist = primecandidates.where(number => !number.value).select(pair=>pair.key).toarray(); var maxprime = maxnumber; while (primelist.asparallel().any(prime=> maxprime%prime==0)) { maxprime--; }
and find maxprime in less 3 seconds maxnumber = 600881475134 (the parallelization because thought take long time)
Comments
Post a Comment