Cerinţa
Să se scrie un program care citeşte un număr natural n şi determină factorul care apare în descompunerea în factori primi a lui n la puterea cea mai mare.
Date de intrare
Programul citește de la tastatură numărul n.
Date de ieşire
Programul afișează pe ecran numărul prim p, cu semnificaţia precizată.
Restricţii şi precizări
1 < n < 2.100.000.000
dacă în descompunerea în factori primi a lui n apar mai mulţi factori la puterea maximă, se va afişa cel mai mare dintre ei
Exemplu
Intrare
405
Ieșire
3
Răspunsuri la întrebare
Răspuns de
0
#include <iostream>
#include <cmath>
using namespace std;
int n,i,j,o,c,d=0;
long pr,b[55],s;
long long int x;
void pf(long long int n)
{
o=0;c=1;pr=1;
while (n%2==0)
{
o++;
b[o]=2;
n/=2;
}
for (i=3;i<=sqrt(n);i+=2)
{
while (n%i==0)
{
o++;
b[o]=i;
n/=i;
}
}
if (n>2)
{
o++;
b[o]=n;
}
for(i=1;i<=o;i++)
{
if(b[i]==b[i+1])c++;
else
{
if(d<c)
{
d=c;
s=b[i];
}
c=1;
}
}
cout<<s;
}
int main()
{
cin>>n;
pf(n);
return 0;
}
#include <cmath>
using namespace std;
int n,i,j,o,c,d=0;
long pr,b[55],s;
long long int x;
void pf(long long int n)
{
o=0;c=1;pr=1;
while (n%2==0)
{
o++;
b[o]=2;
n/=2;
}
for (i=3;i<=sqrt(n);i+=2)
{
while (n%i==0)
{
o++;
b[o]=i;
n/=i;
}
}
if (n>2)
{
o++;
b[o]=n;
}
for(i=1;i<=o;i++)
{
if(b[i]==b[i+1])c++;
else
{
if(d<c)
{
d=c;
s=b[i];
}
c=1;
}
}
cout<<s;
}
int main()
{
cin>>n;
pf(n);
return 0;
}
vic2002:
Am folosit factorizarea prima, apoi toti facotrii i-am salvat intr-un array, am vazut de cite ori se repeta fiecare si acel care se repeta de cele mai multe ori l-am printat.
Răspuns de
2
#include <iostream>
using namespace std;
long long n,d,fm, fact,maxx;
int main()
{
cin>>n;
d=2;
do
{
fm=0;
while(n%d==0)
{
fm++;
n=n/d;
}
if((fm>0)&&(fm >= maxx)) maxx = fm, fact = d;
d++;
if((n>1)&&(d*d>n)) if(maxx > 1) n = 1;
else fact = n, n = 1;
} while(n>1);
cout << fact;
return 0;
}
using namespace std;
long long n,d,fm, fact,maxx;
int main()
{
cin>>n;
d=2;
do
{
fm=0;
while(n%d==0)
{
fm++;
n=n/d;
}
if((fm>0)&&(fm >= maxx)) maxx = fm, fact = d;
d++;
if((n>1)&&(d*d>n)) if(maxx > 1) n = 1;
else fact = n, n = 1;
} while(n>1);
cout << fact;
return 0;
}
Alte întrebări interesante
Germana,
8 ani în urmă
Arte,
8 ani în urmă
Biologie,
8 ani în urmă
Matematică,
9 ani în urmă
Chimie,
9 ani în urmă
Matematică,
9 ani în urmă
Biologie,
9 ani în urmă
Limba română,
9 ani în urmă