Pagini recente » Cod sursa (job #1361161) | Cod sursa (job #1547260) | Cod sursa (job #1457193) | Cod sursa (job #345952) | Cod sursa (job #342329)
Cod sursa(job #342329)
#include <iostream>
#include <fstream>
#include <iomanip>
#include <values.h>
using namespace std;
char prim[1000000];
void imparte(int nr[], int b)
{
int i, t = 0;
for (i = nr[0]; i > 0; i--, t %= b)
nr[i] = (t = t * 10 + nr[i]) / b;
for (; nr[0] > 1 && !nr[nr[0]]; nr[0]--);
}
int rest(int nr[], int b)
{
int i, t = 0;
for (i = nr[0]; i > 0; i--)
t = (t * 10 + (nr[i])) % b;
return t;
}
void ciur(long int nr)
{
long int j;
for(j=nr+nr;j<=1000000;j+=nr)
prim[j]=1;
}
int main()
{
char p[101];
int n[101],j,c,gasit;
long int a,b,i;
ifstream f ("numere2.in");
ofstream g ("numere2.out");
f.getline(p,101);
i=2;
gasit=0;
a=1; b=1;
while(!gasit)
{
if(!prim[i])
{
if(b!=0)
{
c=strlen(p);
for(j=0;j<c;j++)
n[c-j]=(int)p[j] - 48;
n[0]=c;
}
if(rest(n,i)==0)
{
a=i; b=0;
while(rest(n,i)==0)
{ imparte(n,i);
b++;
}
if(n[0]==1&&n[1]==1)
gasit=1;
else
ciur(i);
}
}
i++;
}
g<<a<<"\n"<<b<<"\n";
f.close();
g.close();
return 0;
}