题目地址:http://jobdu.sinaapp.com/problem.php?pid=1016
C语言源码:
#include<stdio.h>
#include<math.h>
int pr[30];
int f(int n)
{
int i,b;
b=(int)sqrt((double)n);
i=2;
while(i<=b)
{
if(n%i==0)
return 0;
i++;
}
return 1;
}
int main()
{
int a[30],b[30],i,j,lena,lenb,x;
char s1[160],s2[160];
i=2;
j=0;
while(j<30)
{
if(f(i))
pr[j++]=i;
i++;
}
scanf("%s %s",s1,s2);
while(1)
{
if(s1[0]=='0'&&s1[1]=='\0'&&s2[0]=='0'&&s2[1]=='\0')
break;
for(i=0;i<30;i++)
{
a[i]=0;
b[i]=0;
}
i=0;
j=0;
x=0;
while(s1[i]!='\0')
{
if(s1[i]>='0'&&s1[i]<='9')
x=x*10+s1[i]-'0';
else
{
a[j++]=x;
x=0;
}
i++;
}
a[j++]=x;
lena=j;
i=0;
j=0;
x=0;
while(s2[i]!='\0')
{
if(s2[i]>='0'&&s2[i]<='9')
x=x*10+s2[i]-'0';
else
{
b[j++]=x;
x=0;
}
i++;
}
b[j++]=x;
lenb=j;
i=0;
j=lena-1;
while(i<j)
{
x=a[i];
a[i]=a[j];
a[j]=x;
i++;
j--;
}
i=0;
j=lenb-1;
while(i<j)
{
x=b[i];
b[i]=b[j];
b[j]=x;
j--;
i++;
}
for(i=0;i<29;i++)
{
if(a[i]+b[i]>=pr[i])
{
a[i+1]=a[i+1]+1;
a[i]=a[i]+b[i]-pr[i];
}
else
a[i]=a[i]+b[i];
}
i=29;
while(a[i]==0)
i--;
while(i>0)
printf("%d,",a[i--]);
printf("%d\n",a[i]);
scanf("%s %s",s1,s2);
}
}