C:nombre ayant nombre impair de diviseurs

[Résolu/Fermé]
Signaler
-
 kara -
Bonjour,
il y'a un exercice dont l'ennoncé dit: Trouver tous les nombres entre 1 et 100 ayant un nombre impair de diviseurs, par exemple, 10 a quatre diviseurs:1,2,5,10 et 10,et donc ne convient pas.
voici ce que j'ai fait
#include<stdio.h>
#include<stdlib.h>
main()
{
int i=1,s=0,j;
for(i=1;i<=100;i++)
{ for(j=1;j<=i;j++)
{
if(i%j==0)
{
s=s+1;
}
}
if(s%2!=0)
printf("%d\n",i);
}
system("pause");
}

es ce que ce j'ai fait est juste??


3 réponses

#include<stdio.h>
#include<stdlib.h>
main()
{
int i=1,s,j;

for(i=1;i<=100;i++)
s=0;
{ for(j=1;j<=i;j++)

{
if(i%j==0)
{
s=s+1;
}
}
if(s%2!=0)
printf("%d\n",i);
}
system("pause");
}
comme ça??TT^TT
Messages postés
16398
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
19 septembre 2021
2 877
Le s=0 doit être à l'intérieur de l'accolade, sinon ce que tu fais c'est mettre s=0, 100 fois !
Et tu ne rentres dans la boucle j qu'une seule fois avec i=100, ce qui est embêtant ^^
oh c'est vrai!!j'ai pas fait attention a l'accolade!!merci!!
Messages postés
16398
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
19 septembre 2021
2 877
Il faudrait que tu réinitialises ton nombre de diviseurs avant chaque nouveau calcul.
Sinon il existe des méthodes pour raccourcir le temps d'exécution du programme (en s'arrêtant à j<=sqrt(i)) mais le principe est là.
Remarque : les nombres trouvés ont une propriété intéressante ;-)