Răspuns :
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 cu produsul 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;
}
Vă mulțumim că ați ales să vizitați platforma noastră dedicată Informatică. Sperăm că informațiile prezentate v-au fost utile. Dacă aveți întrebări suplimentare sau aveți nevoie de ajutor, nu ezitați să ne contactați. Vă așteptăm cu drag data viitoare și vă încurajăm să ne salvați în lista de favorite!