C++

kamilia -  
 kamilia -
Bonjour,
je cherche une fonction int premier(long n) qui retourne 1 si n est premier ,0 sinon
merci

6 réponses

gaby10 Messages postés 445 Date d'inscription   Statut Membre Dernière intervention   58
 
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
kamilia
 
merci bien gaby
0
kamilia
 
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
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kamilia
 
merci char sniper
0
kamilia
 
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