Ik heb het probleem gekraakt met de volgende methode:
Toch heb ik het gevoel dat dit suboptimaal is. Ik heb geprobeerd het via de zeef-methode te doen, die leek me sneller, maar ik krijg het niet helemaal voor elkaar met de maximale grootte van array/ArrayList/Vector, veel gedoe met out of bounds.
http://nl.wikipedia.org/wiki/Zeef_van_Eratosthenes
Aangezien het probleem eigenlijk al opgelost is, kan iemand me uitleggen of de zeef methode te doen is qua geheugen, en zo ja hoe?
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
| import java.util.*; import java.math.*; public class PrimeCalculator { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub //PrimeCalculator prCalc = new PrimeCalculator(13195); String max = "317584931803"; // ik zeg dat ieder priemgetal gevonden kan worden in de reeks onder de wortel van het hoofdgetal // daar heb ik geen bewijs voor long maxi = Long.parseLong(max); PrimeCalculator prCalc = new PrimeCalculator(maxi); System.out.println(prCalc.toString()); } private int maxPrime = 1; PrimeCalculator() { } PrimeCalculator(long maxi) { for (int i=3; i < Math.sqrt(maxi); i+=2) { // als het getal het getal kan delen if (maxi % i == 0) { if (checkPrime(i)) maxPrime = i; } } } public static boolean checkPrime(long n) { boolean prime = true; for (long i = 3; i <= Math.sqrt(n); i += 2) if (n % i == 0) { prime = false; break; } if (( n%2 !=0 && prime && n > 2) || n == 2) { return true; } else { return false; } } public String toString() { return "" + maxPrime; } } |
Toch heb ik het gevoel dat dit suboptimaal is. Ik heb geprobeerd het via de zeef-methode te doen, die leek me sneller, maar ik krijg het niet helemaal voor elkaar met de maximale grootte van array/ArrayList/Vector, veel gedoe met out of bounds.
http://nl.wikipedia.org/wiki/Zeef_van_Eratosthenes
Aangezien het probleem eigenlijk al opgelost is, kan iemand me uitleggen of de zeef methode te doen is qua geheugen, en zo ja hoe?
iOS developer