Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2018
    Messaggi
    14

    Aiuto ottimizzazione programma semplice in C

    Salve a tutti,
    recentemente ho approcciato il linguaggio C iniziando a fare semplici programmi, ho un insegnante molto severo e richiede la massima efficienza dei codici, la consegna era di calcolare tutti i fattori primi di un numero e stamparli a video, questa e' la codifica:
    codice:
    #include <stdio.h>
    
    int main()
     {
      int n;                //numero in input
      int r;                //resto
      int d;                //divisore
      int q;                //quoziente
      int i;                //contatore dei fattori
      i=0;                  //resetto il contatore
      d=2;                  //imposto il divisore a 2
      do                    //input e controllo del numero per n>0
       {
        printf("Gimme n>0: ");
        scanf("%d",&n);
       }
      while (n<=0);
      if (n<4)              //se 0<n<4 allora il numero è primo
       {
        printf("\n%d è un numero primo.",n);
        return(0);
       }
      q=n;
      while (d<=q)          //finchè il divisore è maggiore del numero da dividere, divido e stampo il divisore
       {
        r=q%d;              //calcolo il resto tra il numero e il divisore
        if (r==0)           //se il resto è 0, d è un divisore
         {
          printf("\n%d",d); //stampo il divisore
          q=q/d;            //divido il numero soltanto se trovo un disore
          i++;              //conto quanti divisori stampo a video
         }
        else                //se il resto è diverso da 0, aggiungo il resto all' attuale divisore
         {
          d=d+r;
         }
       }
      if (i==0)printf("\n%d è un numero primo.",n); //se non e stato trovato nessun divisore il numero è primo
      return (0);
     }
    potreste gentilmente aiutarmi a ottimizzarlo?

  2. #2
    Utente di HTML.it L'avatar di linoma
    Registrato dal
    Mar 2010
    Messaggi
    1,266
    ...ma intendi algoritmo e proprio il codice? Presumo in velocità? Potresti riscrivere la serie di divisioni.. magari ne fai un paio cn carta e penna e vedi se riesci a trovare qualcosa..ls butto li forse differenze e prodotti
    Ultima modifica di linoma; 07-02-2020 a 20:45
    Per gli Spartani e Sparta usa spartan

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2018
    Messaggi
    14
    io voglio eseguire tutto il programma con il minor numero di cicli macchina, quindi intendo migliorare l algoritmo, ho fatto una modifica aggiungo un ciclo che controlla se il numero e' primo oppure no, prima di entrare nel loop che divide

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2018
    Messaggi
    14
    questa e' una modifica del codice fatta in classephoto5909205152357790246.jpg

  5. #5
    Utente di HTML.it L'avatar di linoma
    Registrato dal
    Mar 2010
    Messaggi
    1,266
    ...puoi provare ad usare ldiv cn cui hai quoziente e resto cn una sola operazione. Cmq la vera ottimizzazione la puoi trovare solo se riesci a beccare la logica che potrebbe esserci tra le divisioni in serie
    Per gli Spartani e Sparta usa spartan

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2018
    Messaggi
    14
    grazie mille

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2020 vBulletin Solutions, Inc. All rights reserved.