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++;
}
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);
}