Stell mal meinen Code rein, den ich bis jetzt geschafft habe, aber er spuckt als Zufallszahl immer nur die 1 raus?
Code:
#include <stdlib.h>
#include <stdio.h>
#include <iostream.h>
#include <time.h>
int Zufallszahl(int n)
{
/*
int zufall=(double(srand(time(NULL)))/RAND_MAX )*n;
*/
srand(time(NULL));
int zufall=rand()%n;
cout<<"Zufall rand()="<<zufall<<endl;
if(zufall==0)
{
zufall=1;
return zufall;
}
else
{
return zufall;
};
return 0;
}
int ggT(int a, int b)
{
int d,r_neu,r_alt=1;
if(a<b)
{
d=b;
r_neu=a;
}
else
{
d=a;
r_neu=b;
};
while(r_neu!=0)
{
r_alt=r_neu;
r_neu=d%r_neu;
d=r_alt;
}
return d;
}
void main()
{
int const Versuche_Gesamt=7;
int Zufallszahlen[Versuche_Gesamt];
double Versuche_k=0;
int Zeugen_nicht_Primzahl_a=0;
int Primzahl_Test_Gesamt_n=20;
int Primzahl_Frage=10;
int Zufallszahl_z;
for(int h=1;h<=Versuche_Gesamt;h++)
{
Zufallszahlen[h]=0;
};
for(h=1;h<=Versuche_Gesamt;h++)
{
Zufallszahlen[h]=Zufallszahl(Primzahl_Frage-1);
};
for(h=1;h<=Versuche_Gesamt;h++)
{
cout<<"Zufall im Array Stelle "<<h<<" ="<<Zufallszahlen[h]<<endl;
};
cin.get();
for(Primzahl_Frage;Primzahl_Frage<Primzahl_Test_Gesamt_n;Primzahl_Frage++)
{
h=1;
while(Versuche_k<Versuche_Gesamt||Zeugen_nicht_Primzahl_a>=(Primzahl_Frage-1)*0.5)
{
Zufallszahl_z=Zufallszahlen[h];
cout<<Zufallszahl_z<<"=Zufall Zeile 56"<<endl;
if(ggT(Zufallszahl_z,Primzahl_Frage)==1)
{
cout<<"ggT=1 von z und n; Zeile 58"<<endl;
Versuche_k++;
}
else
{
cout<<"ggT>1 von z und n; Zeile 63"<<endl;
Zeugen_nicht_Primzahl_a++;
};
cout<<"Runde vorbei Zeile 66"<<endl;
h++;
};
if(Versuche_k>=Versuche_Gesamt)
{
cout<<Primzahl_Frage<<" ist eine Primzahl"<<endl;
};
if(Zeugen_nicht_Primzahl_a>=(Primzahl_Frage-1)*0.5)
{
cout<<Primzahl_Frage<<" ist keine Primzahl"<<endl;
};
};
cin.get();
}; Bitte, hat keiner einen kleinen Rat, oder Vorschlag es anders zu machen?
Danke,
MfG
Stefan