Ben bezig met m'n profielwerkstuk (HAVO 5). Hier hebben we als onderwerp priemgetallen gekozen en daaraan als soort van afgeleide cryptografie bij gekozen. Mooi artikel op t.net van gebruikt. Nou heb ik de source van Mark Timmer kunnen gebruiken en ik was bezig deze te 'porten' naar c++. Maar het getal wil hij niet uitrekenen.
Nou is dit de eerste keer dat ik 'echt' prog in C++ dus of het allemaal kan wat ik doe weet ik niet. Eerst de code van Mark (in (Q?)Basic):
En dan hier het stukje C++ code wat ik dus zelf gebruik:
Nou is dit de eerste keer dat ik 'echt' prog in C++ dus of het allemaal kan wat ik doe weet ik niet. Eerst de code van Mark (in (Q?)Basic):
QBasic:
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
| Aanmaakpubliek: n# = p# * q# a# = (p# - 1) * (q# - 1) COLOR 31: LOCATE 16, 1: PRINT "Bij n hoort de waarde"; n# IF e# <> 0 THEN mine = e ELSE mine = INT(.5 * n#) FOR e# = mine TO (n# - 1) IF e# > (a# - 1) THEN FOR controle = 2 TO INT(.5 * a#) IF INT(e# / controle) = (e# / controle) THEN IF INT(a# / controle) = (a# / controle) THEN nietrelatief = 1 END IF NEXT IF nietrelatief = 0 THEN EXIT FOR END IF IF e# < a# THEN FOR controle = 2 TO INT(.5 * e#) IF INT(e# / controle) = (e# / controle) THEN IF INT(a# / controle) = (a# / controle) THEN nietrelatief = 1 END IF NEXT IF nietrelatief = 0 THEN EXIT FOR END IF nietrelatief = 0 NEXT IF nietrelatief = 1 THEN mine = 2: GOTO Aanmaakpubliek COLOR 31: LOCATE 17, 1: PRINT "Bij e hoort de waarde"; e# |
En dan hier het stukje C++ code wat ik dus zelf gebruik:
C++:
Hierin zijn p en q priemgetallen die _niet_ gelijk aan elkaar zijn. Bij e hoort er dus 113 uit te komen, maar er komt 220 uit. Werkt goto soms in C++ niet zo als in Basic?
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
| void calc_e(int p, int q) { int a, n, e = 0, mine, check, relprime; void calc_e(int p, int q) { int a, n, e = 0, mine, check, relprime; do { n = p * q; cout << " Waarde voor n: " << n << endl; a = (p - 1) * (q - 1); cout << "Waarde voor a: " << a << endl; if (e != 0) { mine = e; } else { mine = int(n / 2); } for (e = mine; e < (n - 1); e++) { if (e > (a - 1)) { for (check = 2; check < int(a / 2); check++) { if (int(e / check) == (e / check)) { if (int(a / check) == (a / check)) { relprime = 1; } } } if (relprime == 0) { break; } } check = 0; if (e < a) { for (check = 2; check < int(e / 2); check++) { if (int(e / check) == (e / check)) { if (int(a / check) == (a / check)) { relprime = 1; } } } if (relprime == 0) { break; } } relprime = 0; } } while (relprime == 1); cout << " Waarde voor e: " << e << endl; } |
[ Voor 18% gewijzigd door zeroxcool op 17-02-2003 18:42 ]