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. 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
    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. 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. 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