primzahlenberechnung wirft fragen auf
-
bin gerade dabei mir quelltexte anzuschauen und grübel nun an einer funktion. sie soll sagen ob primzahl oder nicht. was bedeuted mod%2 ? wie passiert es das mod/b gleich 0 ist???? wäre schön wenn mir einer kurz den sinn und aufbau dieser funktion erklären könnte.

int modulo (int mod) { for(b=mod%2; b>1; b--) { if(mod/b == 0) { return(0); } else { return(1); } }
-
Gegenvorschlag: Benutz mal kurz den Debugger und steppe mal ein Bischen durch die Funktion.
'%' ist ein Modulo Operator -> C-Sprachreferenz gibt aufschluss und
wenn mod/b == 0 ist, dann wird 0 zurückgegeben. Steht doch da (o;-junix
-
lesen kann ich auch nur mit dem verstehen klappt es net. ich weis was rauskommen soll. mir fehlt nur das wie? was sagt mir der code?
hab noch ein anderes problem:
int modulo (int mod) { for(int b=mod%2; b>1; b--) { if(mod/b == 0) { return(0); } else { return(1); } } #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { int x; int y; x = StrToInt(Edit1->Text); if(x>0) { if(modulo(x)==1) { Label1->Caption= "das ist eine primzahl"; } if(modulo(x)==0) { Label1->Caption= "keine Primzahl"; } } }---------------
E2188 Ausdruckssyntax bei:
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { }was ist falsch?
-
Schon mal die Anzahl der geschweiften Klammern überprüft? Copy&Paste läßt grüßen...
Gruß,
Alexander
-
ja stimmt hab eine kleine klammer vergessen.
weist du was mit der modulo funktion anzufangen?
-
PomBaer schrieb:
weist du was mit der modulo funktion anzufangen?
Ich habe jetzt nur mal flüchtig drübergeschaut. Hast Du mal geprüft, ob die for-Schleife für Test-
Eingaben durchlaufen wird?mod%2berechnet ja den Rest der Division von mod durch 2. Hier kann also eigentlich nur
0 oder 1 rauskommen. D.h. b ist 0 oder 1, aber niemals größer als 1, oder?
Den Sinn dahinter habe ich nicht ganz verstanden.
Woher kommt denn diese Funktion? Wenn Du den Urheber kennst, würde ich den mal fragen.Gruß,
Alexander
-
Mit dem Quelltext den du da hast kannst du sehen ob eine Zahl durch 2 teilbar ist, aber nicht ob es eine Primzahl ist.
Folgende Funktion macht das schon eher:#include <math> bool modulo(int zahl) { bool bprim=true; for(int i=2;i<=sqrt(zahl)&&(bprim=zahl%i);i++); return bprim; }
-
greeneagle schrieb:
... ob eine Zahl durch 2 teilbar ist,...
Hi,
wollte nur anmerken, dass dafür natürlich auch ein einfaches if (zahl%2 == 0) ausreichen würde....
Diese for ist da irgenwie falsch....MfG
Alexander Sulfrian