Salve a tutti, dovrei implementare un programma che visualizzi la scomposizione in fattori primi di un numero n immesso da tastiera. Il programma funziona, ma non capisco perchè l'ultimo numero è sempre uno 0. Eseguendo il debug es. numero=63 esegue correttamente la scomposizione e stampa: 3 , 3, 7 ma in coda al 7 stampa anche uno 0, infatti dal debugger viene assegnato anche primi[3]=0 che non ha senso (infatti il valore di i è ancora a 2). Debuggando quando ragigungo la situazione:
numero=7
k=7
i=2
primi[3,3]
mi aspetterei che il compilatore arrivato a:
primi[i]=k;
assegni a primi[2] il valore di 7, ma oltre che a fare ciò, assegna a primi[3] il valore 0.
Non capisco il perchè.
Idee?
Grazie
#include <stdio.h>
int main()
{
int numero,k,i,j,primi[100];
printf("inserisci un numero da fattorializzare: ");
scanf("%d",&numero);
printf("la fattorializzazione è: \n");
k=2;
i=0;
while(numero!=1)
{
if(numero%k==0)
{
primi[i]=k;
numero=numero/k;
++i;
}
else
{
++k;
}
}
for(j=0; j<=i; j++)
{
printf("%d \n",primi[j]);
}
return 0;
}