2015-08-25 5 views
-2

Problème: Alice et Bob se rencontrent après une longue période. Comme d'habitude, ils adorent jouer à des jeux de maths. Alice prend l'appel et décide du match. Le jeu est très simple, Alice dit un entier et Bob doit dire si le nombre est premier ou non. Comme d'habitude, Bob connaît la logique, mais comme Alice ne laisse pas beaucoup de temps à réfléchir, Bob décide d'écrire un programme informatique. Aidez Bob à accomplir cette tâche en écrivant un programme informatique qui calculera si le nombre est premier ou non. entréeCodechef "Primality Test" Mauvaise réponse

La première ligne de l'entrée contient T testcases, lignes T suivre Chaque ligne T contient un nombre entier N qui doit être testé pour primality sortie

Pour chaque sortie de cas de test dans une ligne distincte , "oui" si le nombre est premier autre "non"

Ma solution:

`import java.io.*; 
import java.math.*; 
import java.util.*; 
class ex6 
{ 
public static void main(String args[])throws IOException 
{ 
    try 
    { 
     BufferedReader input=new BufferedReader(new InputStreamReader(System.in));   
    int t=0; 

     t=Integer.parseInt(input.readLine()); 

    int n=0; 
    int c=0; 

    while(c!=(t)) 
    { 
     int j=0; 
     n=Integer.parseInt(input.readLine()); 
     if(n==1) 
     System.out.println("No"); 
     else{ 
      for(int x=2;x<n/2;x++) 
      { 
      if(n%x==0){j++;break;} 
      } 
      if(j==0) 
      System.out.println("Yes"); 
      else 
      System.out.println("No"); 
     } 

      c++; 


     } } 
catch(Exception e) 
{return;}}}` 
+1

Quel est le résultat que vous obtenez? Peut-être une erreur? –

+0

En supposant que vous avez correctement copié le problème, il n'y a pas de majuscules dans la sortie requise. – moreON

+0

Merci de l'avoir signalé, j'ai eu la réponse! –

Répondre

1

Votre approche globale est mal, lisez https://en.wikipedia.org/wiki/Sieve_of_Eratosthenes. En outre, tous ces exercices supposent que vous utilisez un algorithme connu. L'idée est que vous avez un tableau avec des valeurs booléennes, où "vrai" signifie "premier" et "faux" signifie "non-premier", ce que vous faites est de commencer par un tableau de toutes les vraies valeurs booléennes (à part 1 et 0), puis en commençant par 2, éliminer les multiples de 2 (en les marquant faux), puis passer au nombre premier suivant, qui est 3, marquer les faux multiples de cela, etc., jusqu'à ce que vous ayez terminé.

+0

Je ne suis peut-être pas familier avec le codechef, mais les tamis ne fonctionnent que pour les listes de numéros consécutifs. – warren

+0

@Warren, et votre point est? – Pavel

+0

@warren, vos nombres consécutifs sont des indices dans le tableau booléen. Tout ce que vous faites, quand vous obtenez une valeur d'entrée V est de vérifier si le tableau [V] est vrai, si c'est le cas, alors c'est un premier. – Pavel