Ştiri:

Vă rugăm să citiţi Regulamentul de utilizare a forumului Scientia în secţiunea intitulată "Regulamentul de utilizare a forumului. CITEŞTE-L!".

Main Menu

Numar

Creat de automat, Martie 03, 2012, 06:36:39 PM

« precedentul - următorul »

0 Membri şi 1 Vizitator vizualizează acest subiect.

automat

Salut.
Am o problema aparent simpla, dar nu reusesc s-o rezolv.  >:(

  Care este cel mai mic numar pozitiv care se divide cu toate numerele din intervalul 1 - 20 ?

#include<stdio.h>
int main()
{
     int i, j, d;
     i=1; d=0;
     for(j=1; j<=20; j++)   
     if(i%j==0)                 
     d++;                        // contorizez de cate ori se divide numarul i cu j de la 1 la 20;
     if(d==20)
     printf("\n %d\n", i);
     i++;
}

Quantum

Eu am facut asa pe baza codului de la tine dar este extrem de ineficient. Mi-a dat 232792560
Nu e nici o mirare ca este foarte ineficient algoritmul (am asteptat sa ruleze o vesnicie) din moment ce impart fiecare incrementare la toate numerele de la 1 la 20.
Dupa ce am terminat programul am observat ca algoritmul mult mai eficient ar fi fost sa inmultesc toate numerele prime la cea mai inalta putere intre 1 si 20 in felul urmator (1*2*2*2*2*3*3*5*7*11*13*17*19). Practic este o problema de matematica.

#include<stdio.h>
int main()
{
     int i=20, j, d;

     do
     {
         d=0;
         for (int j=1; j<=20;j++)
         {
             if (i%j==0)
             {
                 d++;
             }
         }
     i++;
     }
     while (d<20);
 
     printf(" %d", --i);
}