Cerinţa
Se dă un număr natural n. Să se determine numărul din intervalul [1,n] care are număr maxim de divizori. Dacă există mai multe asemenea numere, se va afişa cel mai mic dintre ele.
Date de intrare
Programul citeşte de la tastatură numărul n.
Date de ieşire
Programul va afişa pe ecran valoarea cerută..
Restricţii şi precizări
0 < n <= 100.000
Exemplu
Intrare
20
Ieșire
12
Explicații:
12, 18 şi 20 au număr maxim de divizori, dar 12 este cel mai mic.
Răspunsuri la întrebare
Răspuns de
1
Pentru aflarea numarului de divizori ai unui numar am facut functia nrdiv in care am folosit formula: Numarul de divizori ai unui numar este egal cuprodusul dintre exponentii tuturor factorilor primi care apar in descompunerea numarului adunati cu 1.
Functia maxim care determina maximul dintre numerel unui tablou am folosit-o pentru a determina maximul tabloului care contine numarul de divizori ai tuturor numerelor de la 1 la n.
#include<iostream>
using namespace std;
int maxim(int v[100], int n)
{ int max=v[1];
for(int i=1;i<=n;i++)
if(max<v[i])
{
max=v[i];
}
return max;
}
int nrdiv(int n)
{
int p,d=2,i,nd=1;
int v[100];
i=1;
while(n>1)
{p=0;
while(n%d==0)
{
p=p+1;
n=n/d;
}
if(p) {v[i]=p; i=i+1;}
d=d+1;
}
for(int j=1;j<=i-1;j++)
nd=nd*(v[j]+1);
return nd;
}
int main()
{
int u[100],n,max;
cin>>n;
for(int i=0;i<=n;i++)
{u[i]=nrdiv(i);}
max=maxim(u,n);
int j=1;
while(u[j]!=max)
{j=j+1;}
cout<<j;
}
Functia maxim care determina maximul dintre numerel unui tablou am folosit-o pentru a determina maximul tabloului care contine numarul de divizori ai tuturor numerelor de la 1 la n.
#include<iostream>
using namespace std;
int maxim(int v[100], int n)
{ int max=v[1];
for(int i=1;i<=n;i++)
if(max<v[i])
{
max=v[i];
}
return max;
}
int nrdiv(int n)
{
int p,d=2,i,nd=1;
int v[100];
i=1;
while(n>1)
{p=0;
while(n%d==0)
{
p=p+1;
n=n/d;
}
if(p) {v[i]=p; i=i+1;}
d=d+1;
}
for(int j=1;j<=i-1;j++)
nd=nd*(v[j]+1);
return nd;
}
int main()
{
int u[100],n,max;
cin>>n;
for(int i=0;i<=n;i++)
{u[i]=nrdiv(i);}
max=maxim(u,n);
int j=1;
while(u[j]!=max)
{j=j+1;}
cout<<j;
}
stefciornei:
40 puncte
Alte întrebări interesante
Istorie,
9 ani în urmă
Franceza,
9 ani în urmă
Limba română,
9 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă
Biologie,
9 ani în urmă