#include<stdio.h>
#include<math.h>
int n1,n2;//输入的两个数
int a[50];//1表示要这个数,0表示不要这个数
int b[20],c[20];//用来存放两个数的质因数
int a1[20][10],a2[20][10];//用来保存用子集树搜索到的质因数分解
int sum1=0,sum2=0;
//以下函数名和变量名 1 表示对小数进行操作,2 表示对大数进行操作
//数组b,c下标都是从1开始,0位置表示数组的长度
int min(int x,int y)
{
if(x<=y) return x;
else return y;
}
int max(int x,int y)
{
if(x>=y) return x;
else return y;
}
int isprime(int num)
{
int i,k;
k=sqrt(num);
for(i=2;i<=k;i++)
if(num%i==0)
return 0;
return 1;
}
void get1(int m)//获得一个数的所有约数
{
int i,k=1;
for(i=1;i<=m;i++)
if(m%i==0&&i<=100) b[k++]=i;
b[0]=k-1;
}
void get2(int m)//获得一个数的所有约数
{
int i,k=1;
for(i=1;i<=m;i++)
if(m%i==0&&i<=100) c[k++]=i;
c[0]=k-1;
}
int equalmul1(int m) //判断用子集树搜索到的质因数分解乘积是否和原数相等
{
int i,mul=1;
for(i=0;i<m;i++)
if(a[i]==1)
mul=mul*b[i+1];
if(mul==n1) return 1;
else return 0;
}
int equalmul2(int m) //判断用子集树搜索到的质因数分解乘积是否和原数相等
{
int i,mul=1;
for(i=0;i<m;i++)
if(a[i]==1)
mul=mul*c[i+1];
if(mul==n2)
return 1;
else