C++

Bonjour,
je cherche une fonction int premier(long n) qui retourne 1 si n est premier ,0 sinon
merci
Configuration: Windows XP
Internet Explorer 6.0

6 réponses

  1. Essai ceci voir,

    int cmpt=0 //Cette variable va compter le nombre de diviseur du nombre n

    int premier(long n)
    {
    int test=1;

    for (test=1;test++;test<=n) // le for va de 1 au nombre en parametre. Je restreint deja le champ d'action. Ce n'est qu'avec les nbres de cet intervalle kon va verifier si n est premier ou pas
    {
    if (fmod(n,test)==0) cmpt=cmpt+1; // Pout test=1,si le reste de la division de n par test donne 0 alors cmpt s'incremente

    test++;
    }
    // A la fin de For, on regarde le compteur cmpt, si sa valeur est different de 2 alors ce nombre n'est premier

    if(cmpt==2) return 1;
    else return 0;

    }

    J'espere que je ne me suis pas trompé quelque part
    Essai et tu nous donnes le resultat, j'ai pas fait c++ depuis
    0
    1. je fait la meme chose mai j'arive pas au resultat

      #include<stdio.h>
      #include<conio.h>
      int premier(int n,int compt)
      {int i;
      printf("n= ");
      scanf("%d",&n);
      i=2;
      while(i<=(n/2))
      {if(n%i==0)
      compt=1;
      else
      compt=0;
      }return compt;
      }
      0
      1. Contributeur
        bool premier(int n)
        {
        for (int i=2;i*i<n;i++)
        if(n%i==0) return false;
        return true;
        }

        un nombre premier est un nombre qui n'est pas divisible par les autre nombres premier (sauf 1 et lui même)
        Là on fait une boucle de 2 à (en gros ) la racine de n, mais on pourrai en enlever certain. Par exemple si n n'est pas divisible par 2, il ne l'est pas par 4.
        0
        1. slt gaby,voici la reponce d'exo

          #include<conio.h>
          #include<stdlib.h>
          int premier(long n)
          {
          int i=1,s;
          do
          {
          s=n%i;
          i++;
          }
          while(i<=n/2 && s!=0);
          if (i>n/2)
          return(1);
          else
          return(0);
          getch();
          }
          void decompose(long fact[],long n,int *taille)
          {
          int j,a;
          long i;
          for (i=n,j=0;j<*taille;i++,j++)
          {
          if (premier(i)==1)
          fact[j]=i;
          else
          j--;
          }
          for (a=0;a<*taille;a++)
          {
          printf ("fact[%ld]=%ld ",i,fact[i]);
          }
          getch();
          }
          main()
          {
          int k;
          long n,*t;
          printf ("entrer n");
          scanf ("%d",&n);
          printf ("entrer k");
          scanf ("%d",&k);
          t=(long*)malloc(k*sizeof(long));
          decompose(t,n,&k);
          getch();
          }
          0