20. april 2004 - 16:19Der er
8 kommentarer og 1 løsning
Primtal og COMAL80
Jeg fandt i en matematikbog et lille program skrevet i COMAL80 til at finde alle primtal mellem to givne grænser. Det ser således ud:
//Programmet finder primtal mellem to givne grænser INPUT "Angiv nedre grænse ": min INPUT "Angiv øvre grønse ": max PRINT "Primtallene mellem ";min;" OG ";max;" er: " PRINT antal:= 2 IF min MOD 2=0 THEN min:= min+1 FOR a:= min TO max STEP 2 DO FOR k:= 3 TO SQR(a) STEP 2 DO IF a MOD k=0 THEN GOTO ud NEXT k antal := antal+1 PRINT a; ud: NEXT a PRINT PRINT "Ialt ";antal;" primtal"
Jeg kan ikke helt tyde det, men har lavet det om til følgende C++ kode:
#include <iostream.h>
int main() { int antal=2;
int min=0,max=0; cout << "Primtal mellem min og max" << endl; cout << "\n min:" << endl << " max:" << endl; gotoxy(8,3); cin >> min; gotoxy(8,4); cin >> max;
if (min%2==0) { min=min+1; }
for(int a=min;a<max;) { for(int k=3;k<sqrt(a);) { if (a%k==0) { a=a+2; } k=k+2; } antal = antal+1; cout << a << ' '; a=a+2; }
cout << endl << "Fundet i alt: " << antal;
return 0; }
Problemet er bare at min C++ kode finder flere primtal i et givent interval end det er. I matematikbogen står der at der mellem 0 og 50000 findes 5134 primtal. C++ koden finder 9066..
Dejligt.. Det var den løsning jeg ledte efter.. :)
Tak for det..
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.