alea et nb premier

Le
remy
bonjour

toujour sur mon idee de generateur aleatoire
avec les nb premier
donc

un nb de 10 chiffres la graine

calcule ou recherche des 10 nb premier consecutif a la graine

recuperation du chiffre des dixaine
sur les 10 nb premier pour la creation d'une nouvelle graine

calcule ou recherche des 10 nouveaux nb premier consecutif a la nouvelle
grain est etc

les pb

des graines differente peuve genere les meme sequence
pas tres grave

plus grave
le system peut boucle si il y a deux sequence identique et consecutive

1 solution faire une permutation pas tres propre
2 en calculee un de plus et donc metre le 11 a la place de 10
3 change espace
x*10^10+graine
(x+1)*10^10+graine
ou x fait partie de la graine de depart se qui regle un peut
le premier pb

4 la base 10 n'est peut etre pas la meilleur

avent de code avez vous des critiques
si cela fct cela doit deja existe si non ou est le pb
est saver vous aussi si il existe des listes
de nb premier sur le woin woin woin
cela risque de me prendre un peut de temp pour faire
les fichier

10^10 ->20^10
20^10 ->30^10
etc


merci a+ remy
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
remy
Le #446325
bonjour

en gros et pour faire simple
je fais un xor avec un bout de nb premier
+ un peut de cuisine pour changer de nb premier

a+ remy

"remy"
bonjour

toujour sur mon idee de generateur aleatoire
avec les nb premier
donc

un nb de 10 chiffres la graine

calcule ou recherche des 10 nb premier consecutif a la graine

recuperation du chiffre des dixaine
sur les 10 nb premier pour la creation d'une nouvelle graine

calcule ou recherche des 10 nouveaux nb premier consecutif a la nouvelle
grain est etc

les pb

des graines differente peuve genere les meme sequence
pas tres grave

plus grave
le system peut boucle si il y a deux sequence identique et consecutive

1 solution faire une permutation pas tres propre
2 en calculee un de plus et donc metre le 11 a la place de 10
3 change espace
x*10^10+graine
(x+1)*10^10+graine
ou x fait partie de la graine de depart se qui regle un peut
le premier pb

4 la base 10 n'est peut etre pas la meilleur

avent de code avez vous des critiques
si cela fct cela doit deja existe si non ou est le pb
est saver vous aussi si il existe des listes
de nb premier sur le woin woin woin
cela risque de me prendre un peut de temp pour faire
les fichier

10^10 ->20^10
20^10 ->30^10
etc


merci a+ remy


remy
Le #445951
bonjour

entre 2 manip j'aimerais
bien votre avi sur l'alea generais

merci a+ remy

1) faire tourner la machine pendant 3 h
pour calculer les x premiers nb premier a partir de y
avec le prog par exemple

http://www.umh.ac.be/~nombres/logiciel.htm



pc a 500 Mhz 512 Mo de ram
fichier 108 Mo de nb premier

2) javac *.java

3) java alea PREMIERS.TXT 50 100000

java alea Nom du fichier cle<100 nb de chiffre aleatoire


principal pb il faut autant de nb premier que de chiffre





import java.awt.*;
import java.io.*;
import java.util.*;


public class alea
{
public static void main(String args[])
{
gene ge=new gene(args[0],args[1],args[2]);
}

}


class gene
{
DataInputStream r;
Vector v;

gene(String nom,String cle,String nb)
{
// ouverture du fichier
try {
r=new DataInputStream (new FileInputStream(nom));
}catch(IOException e){System.out.println(e);}
this.v=init(r);
gene(Integer.parseInt(cle),Integer.parseInt(nb));

}

// remplisage du tableau 102 premier nb premier du fichier
// 0..101

public Vector init(DataInputStream d)
{
Vector v=new Vector();

try {
for (int i = 0 ; i <102 ; i++)
{
String s=r.readLine();
StringTokenizer st=new StringTokenizer(s);
st.nextToken();
st.nextToken();
String np=st.nextToken(); //recuperation du 3 champ
v.addElement(np);
}

}catch(IOException e)
{
System.out.println(e);
}
return v;
}

public int gene(int cle)
{
// recuperation du nb premier a la position cle du tableau
String n0=(String)v.elementAt(cle);
// suppression du nb premier a la position cle du tableau
v.removeElementAt(cle);
// recuperation du nb premier a la position cle+1 du tableau
String n1=(String)v.elementAt(cle+1);
// suppression du nb premier a la position cle+1 du tableau
v.removeElementAt(cle+1);

//recuperation du chiffre des dizaines de n0
String n010=n0.substring(n0.length()-2,n0.length()-1);
//recuperation du chiffre des dizaines de n1
String n110=n1.substring(n1.length()-2,n1.length()-1);
//convertion de type string -> int
int val0=Integer.parseInt(n010);
int val1=Integer.parseInt(n110);
//System.out.println(cle+" "+n0+" "+n1+" "+n010+" "+n110);
//l'on rajoute 2 nouveaux nb premier lus dans le fichier
Maj(2);
//calcul et retour de la nouvelle cle
return val1*10+val0;
}
public void Maj(int j)
{
try {
for (int i = 0 ; i <j ; i++)
{
String s=this.r.readLine();
StringTokenizer st=new StringTokenizer(s);
st.nextToken();
st.nextToken();
String np=st.nextToken();
//System.out.println("nouveau "+np+" "+v.size());
v.addElement(np);
}
}catch(IOException e){System.out.println(e);}

}

// creation de x alea a partir de la cle

public void gene(int cle,int nb)
{
for (int i = 0 ; i <nb ; i++)
{
cle=gene(cle);
System.out.print(cle+" ");

}
}

}
remy
Le #445946
// creation de x alea a partir de la cle

public void gene(int cle,int nb)
{
for (int i = 0 ; i <nb ; i++)
{
cle=gene(cle);
if(cle==0)

{
System.out.print("00"+" ");
}
else
{
System.out.print(cle+" ");
}

}
}

}


Publicité
Poster une réponse
Anonyme