Il semble que votre paramètre implicite, nombre int, est jamais utilisé dans votre programme. Essayez ce code:
private static int countPrimes(int number){
int count =0;
int countPrimes=0;
if(number<2)
return 0;
for(int i=2; i<=number; i++) { //start i=2, because you know that 1 is not a prime number.
for(int j=1; j<=i; j++){
if(i%j==0)
count++;
}
if(count ==2)
countPrimes++;
count=0;
}
return number;
}
Ensuite, dans votre méthode de coureur, appelez:
int numOfPrimes = countPrimes(10000);
En cela, vous pouvez modifier ce numéro que vous voulez compter jusqu'à. Dans cet exemple, il compte les nombres premiers jusqu'à 10000.
int numOfPrimes = countPrimes(100);
Cela comptera les nombres premiers jusqu'à 100. Si vous voulez garder une trace des nombres premiers, dans votre programme, vous pouvez ajouter:
ArrayList<Integer> listOfPrimes = new ArrayList<Integer>();
private static int countPrimes(int number){
int count =0;
int countPrimes=0;
if(number<2)
return 0;
for(int i=2; i<=number; i++) { //start i=2, because you know that 1 is not a prime number.
for(int j=1; j<=i; j++){
if(i%j==0)
count++;
}
if(count ==2){
countPrimes++;
listOfPrimes.add(i);
}
count=0;
}
return number;
}
pour récupérer vos chiffres que vous pourriez faire quelque chose comme ceci:
System.out.println("Exactly "+ countPrimes(number) + " prime numbers exist between "+ "1" + " and " + number + ".");
System.out.println("These numbers are: ");
for(int i =0; i<listOfPrimes.size();i++){
System.out.println(listOfPrimes.get(i));
}
J'ai reformaté votre code. Une indentation correcte est vraiment utile. –
quel est le but de cette fonction? le numéro de paramètre d'entrée semble seulement être utilisé dans l'impression? – wbao
isPrime n'est pas défini, comment faites-vous cela? aussi commencer j à 2 et casser si pas i% j, il n'y a aucune raison de courir à travers tout ce que je. vous devez également compter zéro à chaque fois. ~ Ben – Ben