C:nombre ayant nombre impair de diviseurs

Résolu
kara -  
 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

kara
 
#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
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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 ^^
0
kara
 
oh c'est vrai!!j'ai pas fait attention a l'accolade!!merci!!
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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 ;-)
-1