Welcome, Guest. Please login or register.

Autor Subiect: Numar  (Citit de 3030 ori)

0 Membri şi 1 Vizitator vizualizează acest subiect.

automat

  • Vizitator
Numar
« : Martie 03, 2012, 06:36:39 p.m. »
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++;
}

Offline Quantum

  • Junior
  • **
  • Mesaje postate: 164
  • Popularitate: +6/-3
Răspuns: Numar
« Răspuns #1 : Martie 03, 2012, 09:39:42 p.m. »
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);
}