Hello Miss
Je t'envoie un exemple de génération d'un fichier avec tous les nombres de 1 à N, avec, pour chacun sa décomposition en facteurs premiers (ou P s'il est premier). Ca fait un peu plus que prévu, je te laisse le soin de faire le tri. Ceci ne répond qu'à 1 de tes 2 questions mais l'autre est basée sur le même principe.
A+.
package com.anthed;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Vector;
public class Prime
{
private final static int MAX = 500000;
private final static int MAX_LENGTH = 4;
private final static String FILE = "le_chemin_de_ton_choix\\prime.txt";
private static StringBuffer sb;
public static void main(String[] args)
{
sb = new StringBuffer(MAX * 5);
analyse(MAX);
save();
}
private static int search(int max)
{
Vector primeVector = new Vector(max/2);
int maxSearch;
boolean isPrime;
int j;
int size;
for (int i=2 ; i<max ; i++)
{
maxSearch = (new Double(Math.sqrt(i))).intValue();
isPrime = true;
j = 0;
size = primeVector.size();
while ((isPrime) && (j<size))
{
isPrime = isPrime && (i % ((Integer)primeVector.elementAt(j)).intValue() != 0);
j++;
}
if (isPrime)
{
primeVector.add(new Integer(i));
}
}
if (!primeVector.isEmpty())
{
System.out.println(" -> " + ((Integer)primeVector.lastElement()).intValue());
}
return primeVector.size();
}
private static void analyse(int max)
{
Vector primeVector = new Vector(max/2);
int maxSearch;
boolean isPrime;
int j;
int size;
int r;
int c;
String result;
for (int i=2 ; i<=max ; i++)
{
maxSearch = (new Double(Math.sqrt(i))).intValue();
isPrime = true;
j = 0;
size = primeVector.size();
while ((isPrime) && (j<size))
{
isPrime = isPrime && (i % ((Integer)primeVector.elementAt(j)).intValue() != 0);
j++;
}
if (isPrime)
{
primeVector.add(new Integer(i));
sb.append(getSpacedInt(i)).append(" : P\n");
}
else
{
result = "";
r = i;
j = 0;
c = ((Integer)primeVector.elementAt(j)).intValue();
while ((j < size) && (r >= c))
{
if (r % c == 0)
{
result += c + ".";
r = r / c;
}
else
{
j++;
c = ((Integer)primeVector.elementAt(j)).intValue();
}
}
sb.append(getSpacedInt(i)).append(" : ")
.append(result.substring(0, result.length()-1)).append("\n");
}
}
}
private static String getSpacedInt(int value)
{
String result = "" + value;
while (result.length() < MAX_LENGTH)
{
result = " " + result;
}
return result;
}
private static void save()
{
try
{
FileWriter fileWriter = new FileWriter(FILE);
fileWriter.write(sb.toString());
fileWriter.close();
}
catch (IOException e)
{
System.out.println("IO Error");
}
}
}