Pagini recente » Cod sursa (job #999420) | Cod sursa (job #1739378) | Cod sursa (job #392075) | Cod sursa (job #1261616) | Cod sursa (job #213777)
Cod sursa(job #213777)
/*Definim P! (P factorial) ca fiind produsul primelor P numere intregi pozitive. Fie N numere
naturale x1, x2... xN date. Notam cu M = (x1!) * (x2!) * ... * (xN!). Sa se determine care este cel
mai mic numar natural nenul cu care trebuie inmultit numarul M astfel incat rezultatul sa se poate
scrie sub forma AK, unde K este dat si A este numar natural.*/
#include<fstream.h>
#include<math.h>
long v[105],pr[105],numar=1,n,k;
ifstream fin("factoriale.in");
ofstream fout("factoriale.out");
int prim(long x)
{
long i;
double d=sqrt(x);
for(i=2;i<=d;i++)
if(x%i==0)
return 0;
return 1;
}
void prime()
{
long i;
for(i=2;i<100;i++)
{
if(prim(i)==1)
pr[++pr[0]]=i;
}
}
void sparge (long x)
{
long nr=1;
while(x!=1)
{
while(x%pr[nr]==0)
{
x/=pr[nr];
v[pr[nr]]++;
}
nr++;
}
}
int main()
{
long x,i,j;
fin>>n>>k;
prime();
for(i=0;i<n;i++)
{
fin>>x;
for(j=2;j<=x;j++)
sparge(j);
}
for(i=2;i<=100;i++)
{
if(v[i]!=0)
{
if(v[i]<k)
numar=numar*i*(k-v[i]);
}
}
fout<<numar<<'\n';
fout.close();
return 0;
}