2017-09-27 7 views
0

Je viens de commencer un cours java. La tâche consiste à écrire un code qui affichera si un nombre est premier ou non.Trouver si un nombre est premier

C'est ce que j'ai. Il arrive avec beaucoup d'erreurs. J'ai trouvé beaucoup de réponses mais ils disent tous d'utiliser des lignes que nous n'avons pas apprises.

public class PrimeNumbers2 { 
public static void main(String[] args) { 
    int number = 9; 
    int count = 2; 
    Boolean prime = true; 

    if (number % count == 0) { 
     prime = true; 
    } 
    else { 

     for (count = count + 1) { 

     if (count + 1>= number) { 
      prime = false; 
     } 
     else 
     { 
      prime = false; 
     } 

    } 
    if (prime == true) 
    { 
     System.out.println("Number is prime"); 
    } 
    else 
    { 
     System.out.println("number is not prime"); 
    } 
}}} 
+1

Publiez votre code ici. Pas une photo de ça. –

+1

[Pourquoi ne pas télécharger des images de code sur SO lorsque vous posez une question?] (Http://meta.stackoverflow.com/questions/285551/why-may-i-not-upload-images-of-code-on-so -when-ask-a-question/285557) (merci d'avoir édité le code dans votre question) – hatchet

+0

l'a édité, désolé. – Paraoxic

Répondre

1

Vous avez plusieurs bogues et erreurs logiques dans votre code. Ici, il est nettoyé.

int number = 15; 
int count = 2; 
boolean prime = true; 


for (int i = count; i <= number/2; i++) { 

    if (number % i == 0) { 
     prime = false; 
    } 
} 


if (prime == true) 
{ 
    System.out.println("Number is prime"); 
} 
else 
{ 
    System.out.println("number is not prime"); 
} 
+0

merci beaucoup pour cela, le seul problème que j'ai maintenant est de comprendre "je", que signifie-t-il réellement? – Paraoxic

+0

L'instruction for se lit comme ceci: commencez à 2, montez de 1 jusqu'à atteindre le nombre/2. i est la variable qui commence à 2 et augmente de 1 à chaque fois. Donc, pour la première itération de la boucle, il est 2 et il s'exécute: 15% 2 == 0. Ensuite, après que cela soit fait avec cette itération, il incrémente i à 3 puis exécute 15% 3 == 0. Il continue à monter 1 chaque fois jusqu'à ce qu'il atteigne le nombre/2, la boucle for se termine. – jwils

+0

@Paraoxic Voici un bon tutoriel à lire sur l'instruction for: https://docs.oracle.com/javase/tutorial/java/nutsandbolts/for.html – jwils

0

Si nous parlons d'une mise en œuvre super simple ici, vous pouvez d'abord vérifier si le nombre est même en utilisant l'opérateur reste, à savoir, si number % 2 == 0, puis prime = true. Si ce n'est pas le cas, définissez count = 3 et configurez une boucle while avec la condition de fin while (count < number). Dans la boucle while, vérifiez si le reste de number et count est égal à zéro. Si c'est le cas, c'est un nombre premier. Sinon, incrémenter count par un et la boucle continue.

+0

Salut merci pour commenter, im environ 6 leçons dans le cours et quand je dis basique je veux dire vraiment basique comme nous l'avons fait pendant que les boucles non plus, y at-il des substituts que je pourrais utiliser? – Paraoxic

+0

La même chose pourrait être faite avec une boucle 'for', c'est-à-dire, pour (count = 3; count DarkyTheOdd

+0

merci d'expliquer cela, très apprécié. Pensez que je l'ai trié maintenant ! – Paraoxic

1

Vous devriez réfléchir à la manière dont vous formuleriez votre problème en langage naturel. Par exemple: Un nombre premier est un nombre qui est divisible seul et 1. ou l'inverse: Pour chaque nombre dans la plage de plus grand que 1 et plus petit que mon numéro, il ne devrait pas y avoir de diviseur.

Pour formuler votre problème maintenant en code java simple, essayez d'implémenter votre instruction.

for(int count=2; count < number; count++) { 
     if(number % count == 0) { 
      System.out.println("Number is not a prime!"); 
      // Since we are finished return and do no more iterations 
      return; 
     } 
    } 
    // we iterated all possible numbers and can return successfully 
    System.out.println("Number is a prime"); 

Veillez également à vérifier les boîtiers de bord à l'avance. Par exemple. nombres négatifs. Veuillez noter que c'est une solution inefficace mais simple.