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

  1. 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
    1. KX Messages postés 19031 Statut Modérateur 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
  2. kara
     
    oh c'est vrai!!j'ai pas fait attention a l'accolade!!merci!!
    0
  3. KX Messages postés 19031 Statut Modérateur 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