﻿ find specified factorizations
```/******************************************************************************
*									      *
*  FIND CURVES AND SUB-CURVES OF DIRICHLET PRODUCTS OF ZETA FUNCTION ZEROS    *
*  08/07/18 (dkc)							      *
*									      *
*  For 32-bit words and N<=100000, the products of primes either don't        *
*  overflow or still give correct results if they do.			      *
*									      *
******************************************************************************/
#include <math.h>
unsigned int nucheck(unsigned int N, unsigned int power, unsigned int extra,
unsigned int subcur, unsigned int tsize, unsigned int *table,
unsigned int *skip, unsigned int nope) {
unsigned int i,j,k,l,m,n;
unsigned long long p,q,r,s,t,u,pth,qth,rth; // use "unsigned long long" for 64-bit words
unsigned long long sth,tth;
unsigned int N2,N3,N5,N7,N11;
N2=N/2+1;
N3=N/6+1;
N5=N/30+1;
N7=N/210+1;
N11=N/2310;
if ((power==27)&&(extra!=0))
goto fjskip;
if ((power==25)&&(extra!=0))
goto fzskip;
if ((power==23)&&(extra!=0))
if ((power==21)&&(extra!=0))
goto bmskip;
if ((power==19)&&(extra!=0))
if ((power==17)&&(extra!=0))
goto acskip;
if ((power==15)&&(extra!=0))
goto gskip;
if ((power==13)&&(extra!=0))
goto fskip;
if ((power==11)&&(extra!=0))
goto eskip;
if ((power==9)&&(extra!=0))
goto dskip;
if ((power==7)&&(extra!=0))
goto cskip;
if ((power==5)&&(extra!=0))
goto bskip;
if ((power==3)&&(extra!=0))
for (i=0; i<tsize; i++) {
p=table[i];
pth=p;
for (j=1; j<power; j++)
pth=pth*p;
if (N==pth)
return(1);
if (N<pth)
break;
}
return(0);
//
// 3
//
if (subcur==2)
goto agskip;
if (subcur==3)
goto zjskip;
if (subcur==4)
goto zoskip;
if ((subcur==0)&&(skip[0]!=0))
goto agskip;
for (i=0; i<tsize; i++) {
p=table[i];
pth=p*p*p;
if (pth==N)
return(1);
if (N<pth)
break;
}
if (subcur==1)
return(0);
agskip:
if ((subcur==0)&&(skip[1]!=0))
goto zjskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N2<p)
break;
for (j=i+1; j<tsize; j++) {
q=table[j];
if ((p*q)==N)
return(1);
if (N<(p*q))
break;
}
}
if (subcur==2)
return(0);
zjskip:
if ((subcur==0)&&(skip[2]!=0))
goto zoskip;
for (i=0; i<tsize; i++) {
p=table[i];
pth=p*p;
if (pth==N)
return(1);
if (N<pth)
break;
}
if (subcur==3)
return(0);
zoskip:
if ((subcur==0)&&(skip[3]!=0))
goto zpskip;
if (nope!=0)
goto zpskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (p==N)
return(1);
if (N<p)
break;
}
zpskip:
if (skip[19]!=0)
return(0);
//
// 5
//
bskip:
if (subcur==2)
goto ahskip;
if (subcur==3)
goto zkskip;
if ((subcur==0)&&(skip[0]!=0))
goto ahskip;
for (i=0; i<tsize; i++) {
p=table[i];
pth=p*p*p;
if (N<pth)
break;
pth=p*p*pth;
if (pth==N)
return(1);
if (N<pth)
break;
}
if (subcur==1)
return(0);
ahskip:
if ((subcur==0)&&(skip[1]!=0))
goto zkskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N2<p)
break;
pth=p*p;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
if ((pth*q)==N)
return(1);
if (N<(pth*q))
break;
}
}
if (subcur==2)
return(0);
zkskip:
if ((subcur==0)&&(skip[2]!=0))
goto zqskip;
for (i=0; i<tsize; i++) {
p=table[i];
pth=p*p*p*p;
if (pth==N)
return(1);
if (N<pth)
break;
}
zqskip:
if (skip[19]!=0)
return(0);
//
// 7
//
cskip:
if (subcur==2)
goto afskip;
if (subcur==3)
goto aiskip;
if (subcur==4)
goto zlskip;
if ((subcur==0)&&(skip[0]!=0))
goto afskip;
for (i=0; i<tsize; i++) {
p=table[i];
pth=p*p*p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (pth==N)
return(1);
if (N<pth)
break;
}
if (subcur==1)
return(0);
afskip:
if ((subcur==0)&&(skip[1]!=0))
goto aiskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N2<p)
break;
pth=p*p*p;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
if ((pth*q)==N)
return(1);
if (N<(pth*q))
break;
}
}
if (subcur==2)
return(0);
aiskip:
if ((subcur==0)&&(skip[2]!=0))
goto zlskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N3<p)
break;
for (j=i+1; j<tsize; j++) {
q=table[j];
qth=p*q;
if (N<qth)
break;
for (k=j+1; k<tsize; k++) {
r=table[k];
if ((qth*r)==N)
return(1);
if (N<(qth*r))
break;
}
}
}
if (subcur==3)
return(0);
zlskip:
if ((subcur==0)&&(skip[3]!=0))
goto zrskip;
for (i=0; i<tsize; i++) {
p=table[i];
pth=p*p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (pth==N)
return(1);
if (N<pth)
break;
}
zrskip:
if (skip[19]!=0)
return(0);
//
// 9
//
dskip:
if (subcur==2)
goto nskip;
if (subcur==3)
goto ajskip;
if (subcur==4)
goto ziskip;
if ((subcur==0)&&(skip[0]!=0))
goto nskip;
for (i=0; i<tsize; i++) {
p=table[i];
pth=p*p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (pth==N)
return(1);
if (N<pth)
break;
}
if (subcur==1)
return(0);
nskip:
if ((subcur==0)&&(skip[1]!=0))
goto ajskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N2<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
if ((pth*q)==N)
return(1);
if (N<(pth*q))
break;
}
}
if (subcur==2)
return(0);
ajskip:
if ((subcur==0)&&(skip[2]!=0))
goto ziskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N2<p)
break;
pth=p*p;
if (N<pth)
break;
for (j=i+1; j<tsize; j++) {
q=table[j];
qth=q*q;
if (N<qth)
break;
if ((pth*qth)==N)
return(1);
if (N<(pth*qth))
break;
}
}
if (subcur==3)
return(0);
ziskip:
if ((subcur==0)&&(skip[3]!=0))
goto ztskip;
for (i=0; i<tsize; i++) {
p=table[i];
pth=p*p*p*p;
if (N<pth)
break;
pth=p*p*p*p*pth;
if (pth==N)
return(1);
if (N<pth)
break;
}
ztskip:
if (skip[19]!=0)
return(0);
//
// 11
//
eskip:
if (subcur==2)
goto oskip;
if (subcur==3)
goto pskip;
if (subcur==4)
goto akskip;
if (subcur==5)
goto zmskip;
if ((subcur==0)&&(skip[0]!=0))
goto oskip;
for (i=0; i<tsize; i++) {
p=table[i];
pth=p*p*p*p;
if (N<pth)
break;
pth=p*p*p*p*pth;
if (N<pth)
break;
p=p*p*p*pth;
if (p==N)
return(1);
if (N<p)
break;
}
if (subcur==1)
return(0);
oskip:
if ((subcur==0)&&(skip[1]!=0))
goto pskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N2<p)
break;
pth=p*p*p;
if (N<pth)
break;
pth=p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
if ((pth*q)==N)
return(1);
if (N<(pth*q))
break;
}
}
if (subcur==2)
return(0);
pskip:
if ((subcur==0)&&(skip[2]!=0))
goto akskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N2<p)
break;
pth=p*p*p;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q;
if (N<qth)
break;
if ((pth*qth)==N)
return(1);
if (N<(pth*qth))
break;
}
}
if (subcur==3)
return(0);
akskip:
if ((subcur==0)&&(skip[3]!=0))
goto zmskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N3<p)
break;
pth=p*p;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=pth*q;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
if ((qth*r)==N)
return(1);
if (N<(qth*r))
break;
}
}
}
if (subcur==4)
return(0);
zmskip:
if ((subcur==0)&&(skip[4]!=0))
for (i=0; i<tsize; i++) {
p=table[i];
pth=p*p*p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (pth==N)
return(1);
if (N<pth)
break;
}
if (skip[18]!=0)
return(0);
//
// 13
//
fskip:
if (subcur==2)
goto qskip;
if (subcur==3)
goto rskip;
if (subcur==4)
goto tskip;
if (subcur==5)
goto uskip;
if (subcur==6)
goto alskip;
if (subcur==7)
goto zbskip;
if (subcur==8)
goto znskip;
if ((subcur==0)&&(skip[0]!=0))
goto qskip;
for (i=0; i<tsize; i++) {
p=table[i];
pth=p*p*p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (pth==N)
return(1);
if (N<pth)
break;
}
if (subcur==1)
return(0);
qskip:
if ((subcur==0)&&(skip[1]!=0))
goto rskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N2<p)
break;
pth=p*p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
if ((pth*q)==N)
return(1);
if (N<(pth*q))
break;
}
}
if (subcur==2)
return(0);
rskip:
if ((subcur==0)&&(skip[2]!=0))
goto tskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N2<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q;
if (N<qth)
break;
if ((pth*qth)==N)
return(1);
if (N<(pth*qth))
break;
}
}
if (subcur==3)
return(0);
tskip:
if ((subcur==0)&&(skip[3]!=0))
goto uskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N3<p)
break;
pth=p*p*p;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=pth*q;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
if ((qth*r)==N)
return(1);
if (N<(qth*r))
break;
}
}
}
if (subcur==4)
return(0);
uskip:
if ((subcur==0)&&(skip[4]!=0))
goto alskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N5<p)
break;
for (j=i+1; j<tsize; j++) {
q=table[j];
qth=p*q;
if (N<qth)
break;
for (k=j+1; k<tsize; k++) {
r=table[k];
rth=qth*r;
if (N<rth)
break;
for (l=k+1; l<tsize; l++) {
s=table[l];
if ((rth*s)==N)
return(1);
if (N<(rth*s))
break;
}
}
}
}
if (subcur==5)
return(0);
alskip:
if ((subcur==0)&&(skip[5]!=0))
return(0);
for (i=0; i<tsize; i++) {
p=table[i];
if (N2<p)
break;
pth=p*p*p;
if (N<pth)
break;
for (j=i+1; j<tsize; j++) {
q=table[j];
qth=q*q*q;
if (N<qth)
break;
if ((pth*qth)==N)
return(1);
if (N<(pth*qth))
break;
}
}
if (subcur==6)
return(0);
zbskip:
if ((subcur==0)&&(skip[6]!=0))
goto znskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N2<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
if ((pth*q)==N)
return(1);
if (N<(pth*q))
break;
}
}
if (subcur==7)
return(0);
znskip:
if ((subcur==0)&&(skip[7]!=0))
goto ybskip;
for (i=0; i<tsize; i++) {
p=table[i];
pth=p*p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (pth==N)
return(1);
if (N<pth)
break;
}
ybskip:
if (skip[18]!=0)
return(0);
//
// 15
//
gskip:
if (subcur==8)
goto yfskip;
if (subcur==7)
goto zeskip;
if (subcur==6)
goto abskip;
if (subcur==5)
goto lskip;
if (subcur==4)
goto mskip;
if (subcur==3)
goto kskip;
if (subcur==2)
goto amskip;
if ((subcur==0)&&(skip[0]!=0))
goto amskip;
for (i=0; i<tsize; i++) {
p=table[i];
pth=p*p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (pth==N)
return(1);
if (N<pth)
break;
}
if (subcur==1)
return(0);
amskip:
if ((subcur==0)&&(skip[1]!=0))
goto kskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N2<p)
break;
pth=p*p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
pth=p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
if ((pth*q)==N)
return(1);
if (N<(pth*q))
break;
}
}
if (subcur==2)
return(0);
kskip:
if ((subcur==0)&&(skip[2]!=0))
goto mskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N2<p)
break;
pth=p*p*p;
if (N<pth)
break;
p=p*p*pth;
if (N<p)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q;
if (N<qth)
break;
if ((p*qth)==N)
return(1);
if (N<(p*qth))
break;
}
}
if (subcur==3)
return(0);
mskip:
if ((subcur==0)&&(skip[3]!=0))
goto lskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N3<p)
break;
pth=p*p;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q;
if (N<qth)
break;
qth=pth*qth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
if ((qth*r)==N)
return(1);
if (N<(qth*r))
break;
}
}
}
if (subcur==4)
return(0);
lskip:
if ((subcur==0)&&(skip[4]!=0))
goto abskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N3<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*pth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
if ((qth*r)==N)
return(1);
if (N<(qth*r))
break;
}
}
}
if (subcur==5)
return(0);
abskip:
if ((subcur==0)&&(skip[5]!=0))
goto zeskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N2<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q*q;
if (N<qth)
break;
if ((pth*qth)==N)
return(1);
if (N<(pth*qth))
break;
}
}
if (subcur==6)
return(0);
zeskip:
if ((subcur==0)&&(skip[6]!=0))
goto yfskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N2<p)
break;
pth=p*p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
if ((pth*q)==N)
return(1);
if (N<(pth*q))
break;
}
}
if (subcur==7)
return(0);
yfskip:
if ((subcur==0)&&(skip[7]!=0))
goto ycskip;
for (i=0; i<tsize; i++) {
p=table[i];
pth=p*p*p*p;
if (N<pth)
break;
pth=p*p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N==pth)
return(1);
if (N<pth)
break;
}
ycskip:
if (skip[18]!=0)
return(0);
//
// 17
//
acskip:
if (subcur==2)
if (subcur==3)
goto sskip;
if (subcur==4)
if (subcur==5)
goto aeskip;
if (subcur==6)
goto zcskip;
if (subcur==7)
goto zdskip;
if (subcur==8)
goto zgskip;
if (subcur==9)
goto zhskip;
if (subcur==10)
goto ygskip;
if ((subcur==0)&&(skip[0]!=0))
for (i=0; i<tsize; i++) {
p=table[i];
pth=p*p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
pth=p*p*pth;
if (pth==N)
return(1);
if (N<pth)
break;
}
if (subcur==1)
return(0);
if ((subcur==0)&&(skip[1]!=0))
goto sskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N2<p)
break;
pth=p*p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q;
if (N<qth)
break;
if ((pth*qth)==N)
return(1);
if (N<(pth*qth))
break;
}
}
if (subcur==2)
return(0);
sskip:
if ((subcur==0)&&(skip[2]!=0))
for (i=0; i<tsize; i++) {
p=table[i];
if (N3<p)
break;
pth=p*p*p;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q;
if (N<qth)
break;
qth=pth*qth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
if ((qth*r)==N)
return(1);
if (N<(qth*r))
break;
}
}
}
if (subcur==3)
return(0);
if ((subcur==0)&&(skip[3]!=0))
goto aeskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N5<p)
break;
pth=p*p;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*pth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
rth=r*qth;
if (N<rth)
break;
for (l=0; l<tsize; l++) {
if (i==l)
continue;
if (j==l)
continue;
if (k==l)
continue;
s=table[l];
if ((rth*s)==N)
return(1);
if (N<(rth*s))
break;
}
}
}
}
if (subcur==4)
return(0);
aeskip:
if ((subcur==0)&&(skip[4]!=0))
goto zcskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N2<p)
break;
pth=p*p*p;
if (N<pth)
break;
pth=p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q*q;
if (N<qth)
break;
if ((pth*qth)==N)
return(1);
if (N<(pth*qth))
break;
}
}
if (subcur==5)
return(0);
zcskip:
if ((subcur==0)&&(skip[5]!=0))
goto zdskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N2<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q;
if (N<qth)
break;
if (N==(pth*qth))
return(1);
if (N<(pth*qth))
break;
}
}
if (subcur==6)
return(0);
zdskip:
if ((subcur==0)&&(skip[6]!=0))
goto zgskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N3<p)
break;
pth=p*p*p;
if (N<pth)
break;
pth=p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*pth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
if (N==(r*qth))
return(1);
if (N<(r*qth))
break;
}
}
}
if (subcur==7)
return(0);
zgskip:
if ((subcur==0)&&(skip[7]!=0))
goto zhskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N2<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
if (N==(pth*q))
return(1);
if (N<(pth*q))
break;
}
}
if (subcur==8)
return(0);
zhskip:
if ((subcur==0)&&(skip[8]!=0))
goto ygskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N2<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
pth=p*p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
if (N==(pth*q))
return(1);
if (N<(pth*q))
break;
}
}
if (subcur==9)
return(0);
ygskip:
if ((subcur==0)&&(skip[9]!=0))
goto ydskip;
for (i=0; i<tsize; i++) {
p=table[i];
pth=p*p*p*p;
if (N<pth)
break;
pth=p*p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*p*pth;
if (N==pth)
return(1);
if (N<pth)
break;
}
ydskip:
if (skip[18]!=0)
return(0);
//
//  p=19
//
if (subcur==2)
goto bbskip;
if (subcur==3)
goto bcskip;
if (subcur==4)
goto bdskip;
if (subcur==5)
goto beskip;
if (subcur==6)
goto bfskip;
if (subcur==7)
goto bgskip;
if (subcur==8)
goto bhskip;
if (subcur==9)
goto biskip;
if (subcur==10)
goto bjskip;
if (subcur==11)
goto bkskip;
if (subcur==12)
goto blskip;
if (subcur==13)
goto zsskip;
if (subcur==14)
goto buskip;
if (subcur==15)
goto bvskip;
if (subcur==16)
goto bwskip;
if (subcur==17)
goto bxskip;
if (subcur==18)
goto yhskip;
if ((subcur==0)&&(skip[0]!=0))
goto bbskip;
for (i=0; i<tsize; i++) {
p=table[i];
pth=p*p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
p=p*p*p*p*pth;
if (p==N)
return(1);
if (N<p)
break;
}
if (subcur==1)
return(0);
bbskip:
if ((subcur==0)&&(skip[1]!=0))
goto bcskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N2<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
pth=p*p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
if (N==(pth*q))
return(1);
if (N<(pth*q))
break;
}
}
if (subcur==2)
return(0);
bcskip:
if ((subcur==0)&&(skip[2]!=0))
goto bdskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N2<p)
break;
pth=p*p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q*q;
if (N<qth)
break;
if (N==(pth*qth))
return(1);
if (N<(pth*qth))
break;
}
}
if (subcur==3)
return(0);
bdskip:
if ((subcur==0)&&(skip[3]!=0))
goto beskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N3<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*pth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
if (N==(r*qth))
return(1);
if (N<(r*qth))
break;
}
}
}
if (subcur==4)
return(0);
beskip:
if ((subcur==0)&&(skip[4]!=0))
goto bfskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N3<p)
break;
pth=p*p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*pth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
if (N==(r*qth))
return(1);
if (N<(r*qth))
break;
}
}
}
if (subcur==5)
return(0);
bfskip:
if ((subcur==0)&&(skip[5]!=0))
goto bgskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N3<p)
break;
pth=p*p;
if (N<pth)
break;
for (j=i+1; j<tsize; j++) {
q=table[j];
qth=q*q;
if (N<qth)
break;
qth=qth*pth;
if (N<qth)
break;
for (k=j+1; k<tsize; k++) {
r=table[k];
rth=r*r;
if (N<rth)
break;
if (N==(rth*qth))
return(1);
if (N<(rth*qth))
break;
}
}
}
if (subcur==6)
return(0);
bgskip:
if ((subcur==0)&&(skip[6]!=0))
goto bhskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N3<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q;
if (N<qth)
break;
qth=pth*qth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
if (N==(r*qth))
return(1);
if (N<(r*qth))
break;
}
}
}
if (subcur==7)
return(0);
bhskip:
if ((subcur==0)&&(skip[7]!=0))
goto biskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N3<p)
break;
pth=p*p*p;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q*q;
if (N<qth)
break;
qth=pth*qth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
if (N==(r*qth))
return(1);
if (N<(r*qth))
break;
}
}
}
if (subcur==8)
return(0);
biskip:
if ((subcur==0)&&(skip[8]!=0))
goto bjskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N5<p)
break;
pth=p*p*p;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*pth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
rth=r*qth;
if (N<rth)
break;
for (l=0; l<tsize; l++) {
if (i==l)
continue;
if (j==l)
continue;
if (k==l)
continue;
s=table[l];
sth=s*rth;
if (N==sth)
return(1);
if (N<sth)
break;
}
}
}
}
if (subcur==9)
return(0);
bjskip:
if ((subcur==0)&&(skip[9]!=0))
goto bkskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N7<p)
break;
for (j=i+1; j<tsize; j++) {
q=table[j];
qth=p*q;
if (N<qth)
break;
for (k=j+1; k<tsize; k++) {
r=table[k];
rth=r*qth;
if (N<rth)
break;
for (l=k+1; l<tsize; l++) {
s=table[l];
sth=s*rth;
if (N<sth)
break;
for (m=l+1; m<tsize; m++) {
t=table[m];
tth=t*sth;
if (N==tth)
return(1);
if (N<tth)
break;
}
}
}
}
}
if (subcur==10)
return(0);
bkskip:
if ((subcur==0)&&(skip[10]!=0))
goto blskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N2<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
for (j=i+1; j<tsize; j++) {
q=table[j];
qth=q*q*q*q;
if (N<qth)
break;
if (N==(pth*qth))
return(1);
if (N<(pth*qth))
break;
}
}
if (subcur==11)
return(0);
blskip:
if ((subcur==0)&&(skip[11]!=0))
goto zsskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N2<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
pth=p*p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
pth=p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
if (N==(pth*q))
return(1);
if (N<(pth*q))
break;
}
}
if (subcur==12)
return(0);
zsskip:
if ((subcur==0)&&(skip[12]!=0))
goto buskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N2<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
pth=p*p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*p*pth;
if (N<pth)
break;
pth=p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
if (N==(pth*q))
return(1);
if (N<(pth*q))
break;
}
}
if (subcur==13)
return(0);
buskip:
if ((subcur==0)&&(skip[13]!=0))
goto bvskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N2<p)
break;
pth=p*p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q;
if (N<qth)
break;
if (N==(pth*qth))
return(1);
if (N<(pth*qth))
break;
}
}
if (subcur==14)
return(0);
bvskip:
if ((subcur==0)&&(skip[14]!=0))
goto bwskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N2<p)
break;
pth=p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q;
if (N<qth)
break;
if (N==(pth*qth))
return(1);
if (N<(pth*qth))
break;
}
}
if (subcur==15)
return(0);
bwskip:
if ((subcur==0)&&(skip[15]!=0))
goto bxskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N2<p)
break;
pth=p*p*p;
if (N<pth)
break;
pth=p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q*q*q;
if (N<qth)
break;
if (N==(pth*qth))
return(1);
if (N<(pth*qth))
break;
}
}
if (subcur==16)
return(0);
bxskip:
if ((subcur==0)&&(skip[16]!=0))
goto yhskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N2<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q*q;
if (N<qth)
break;
if (N==(pth*qth))
return(1);
if (N<(pth*qth))
break;
}
}
if (subcur==17)
return(0);
yhskip:
if ((subcur==0)&&(skip[17]!=0))
goto yeskip;
for (i=0; i<tsize; i++) {
p=table[i];
pth=p*p*p*p;
if (N<pth)
break;
pth=p*p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*p*pth;
if (N<pth)
break;
pth=p*p*pth;
if (N==pth)
return(1);
if (N<pth)
break;
}
yeskip:
if (skip[18]!=0)
return(0);
//
// 21
//
bmskip:
if (subcur==2)
goto bnskip;
if (subcur==3)
goto boskip;
if (subcur==4)
goto bpskip;
if (subcur==5)
goto bqskip;
if (subcur==6)
goto brskip;
if (subcur==7)
goto bsskip;
if (subcur==8)
goto btskip;
if (subcur==9)
goto byskip;
if (subcur==10)
goto bzskip;
if (subcur==11)
goto buzskip;
if (subcur==12)
goto yiskip;
if ((subcur==0)&&(skip[0]!=0))
goto bnskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N3<p)
break;
pth=p*p*p;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q;
if (N<qth)
break;
qth=qth*pth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
rth=r*r;
if (N<rth)
break;
if (N==(qth*rth))
return(1);
if (N<(pth*rth))
break;
}
}
}
if (subcur==1)
return(0);
bnskip:
if ((subcur==0)&&(skip[1]!=0))
goto boskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N5<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*pth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
rth=r*qth;
if (N<rth)
break;
for (l=0; l<tsize; l++) {
if (i==l)
continue;
if (j==l)
continue;
if (k==l)
continue;
s=table[l];
sth=s*rth;
if (N==sth)
return(1);
if (N<sth)
break;
}
}
}
}
if (subcur==2)
return(0);
boskip:
if ((subcur==0)&&(skip[2]!=0))
goto bpskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N3<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
pth=p*p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*pth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
if (N==(r*qth))
return(1);
if (N<(r*qth))
break;
}
}
}
if (subcur==3)
return(0);
bpskip:
if ((subcur==0)&&(skip[3]!=0))
goto bqskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N2<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q;
if (N<qth)
break;
if (N==(pth*qth))
return(1);
if (N<(pth*qth))
break;
}
}
if (subcur==4)
return(0);
bqskip:
if ((subcur==0)&&(skip[4]!=0))
goto brskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N2<p)
break;
pth=p*p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q*q*q;
if (N<qth)
break;
if (N==(pth*qth))
return(1);
if (N<(pth*qth))
break;
}
}
if (subcur==5)
return(0);
brskip:
if ((subcur==0)&&(skip[5]!=0))
goto bsskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N2<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
pth=p*p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
if (N==(q*pth))
return(1);
if (N<(q*pth))
break;
}
}
if (subcur==6)
return(0);
bsskip:
if ((subcur==0)&&(skip[6]!=0))
goto btskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N5<p)
break;
pth=p*p;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q;
if (N<qth)
break;
qth=qth*pth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
rth=r*qth;
if (N<rth)
break;
for (l=0; l<tsize; l++) {
if (i==l)
continue;
if (j==l)
continue;
if (k==l)
continue;
s=table[l];
if (N==(rth*s))
return(1);
if (N<(rth*s))
break;
}
}
}
}
if (subcur==7)
return(0);
btskip:
if ((subcur==0)&&(skip[7]!=0))
goto byskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N2<p)
break;
pth=p*p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
if (N==(q*pth))
return(1);
if (N<(q*pth))
break;
}
}
if (subcur==8)
return(0);
byskip:
if ((subcur==0)&&(skip[8]!=0))
goto bzskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N3<p)
break;
pth=p*p*p;
if (N<pth)
break;
pth=p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q;
if (N<qth)
break;
qth=pth*qth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
if (N==(r*qth))
return(1);
if (N<(r*qth))
break;
}
}
}
if (subcur==9)
return(0);
bzskip:
if ((subcur==0)&&(skip[9]!=0))
goto buzskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N3<p)
break;
pth=p*p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*pth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
if (N==(r*qth))
return(1);
if (N<(r*qth))
break;
}
}
}
if (subcur==10)
return(0);
buzskip:
if ((subcur==0)&&(skip[10]!=0))
goto yiskip;
for (i=0; i<tsize; i++) {
p=table[i];
pth=p*p*p*p;
if (N<pth)
break;
pth=p*p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*p*pth;
if (N<pth)
break;
pth=p*pth;
if (N==pth)
return(1);
if (N<pth)
break;
}
if (subcur==11)
return(0);
yiskip:
if ((subcur==0)&&(skip[11]!=0))
return(0);
for (i=0; i<tsize; i++) {
p=table[i];
pth=p*p*p*p;
if (N<pth)
break;
pth=p*p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*p*pth;
if (N==pth)
return(1);
if (N<pth)
break;
}
return(0);
//
// 23
//
if (subcur==22)
goto duskip;
if (subcur==21)
goto dtskip;
if (subcur==20)
goto dsskip;
if (subcur==19)
goto drskip;
if (subcur==18)
goto dqskip;
if (subcur==17)
goto dpskip;
if (subcur==16)
goto doskip;
if (subcur==15)
goto dnskip;
if (subcur==14)
goto dmskip;
if (subcur==13)
goto dlskip;
if (subcur==12)
goto dkskip;
if (subcur==11)
goto djskip;
if (subcur==10)
goto diskip;
if (subcur==9)
goto dhskip;
if (subcur==8)
goto dgskip;
if (subcur==7)
goto dfskip;
if (subcur==6)
goto deskip;
if (subcur==5)
goto ddskip;
if (subcur==4)
goto dcskip;
if (subcur==3)
goto dbskip;
if (subcur==2)
if ((subcur==0)&&(skip[0]!=0))
for (i=0; i<tsize; i++) {
p=table[i];
if (N5<p)
break;
pth=p*p*p;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q;
if (N<qth)
break;
qth=qth*pth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
rth=r*qth;
if (N<rth)
break;
for (l=0; l<tsize; l++) {
if (i==l)
continue;
if (j==l)
continue;
if (k==l)
continue;
s=table[l];
if (N==(s*rth))
return(1);
if (N<(s*rth))
break;
}
}
}
}
if (subcur==1)
return(0);
if ((subcur==0)&&(skip[1]!=0))
goto dbskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N7<p)
break;
pth=p*p;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*pth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
rth=r*qth;
if (N<rth)
break;
for (l=0; l<tsize; l++) {
if (i==l)
continue;
if (j==l)
continue;
if (k==l)
continue;
s=table[l];
sth=s*rth;
if (N<sth)
break;
for (m=0; m<tsize; m++) {
if (i==m)
continue;
if (j==m)
continue;
if (k==m)
continue;
if (l==m)
continue;
t=table[m];
if (N==(t*sth))
return(1);
if (N<(t*sth))
break;
}
}
}
}
}
if (subcur==2)
return(0);
dbskip:
if ((subcur==0)&&(skip[2]!=0))
goto dcskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N3<p)
break;
pth=p*p*p;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q*q;
if (N<qth)
break;
qth=pth*qth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
rth=r*r;
if (N<rth)
break;
if (N==(qth*rth))
return(1);
if (N<(qth*rth))
break;
}
}
}
if (subcur==3)
return(0);
dcskip:
if ((subcur==0)&&(skip[3]!=0))
goto ddskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N3<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q*q;
if (N<qth)
break;
qth=pth*qth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
if (N==(qth*r))
return(1);
if (N<(qth*r))
break;
}
}
}
if (subcur==4)
return(0);
ddskip:
if ((subcur==0)&&(skip[4]!=0))
goto deskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N3<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q;
if (N<qth)
break;
qth=pth*qth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
rth=r*r;
if (N==(qth*rth))
return(1);
if (N<(qth*rth))
break;
}
}
}
if (subcur==5)
return(0);
deskip:
if ((subcur==0)&&(skip[5]!=0))
goto dfskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N3<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*pth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
if (N==(qth*r))
return(1);
if (N<(qth*r))
break;
}
}
}
if (subcur==6)
return(0);
dfskip:
if ((subcur==0)&&(skip[6]!=0))
goto dgskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N2<p)
break;
pth=p*p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
pth=p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q;
if (N<qth)
break;
if (N==(pth*qth))
return(1);
if (N<(pth*qth))
break;
}
}
if (subcur==7)
return(0);
dgskip:
if ((subcur==0)&&(skip[7]!=0))
goto dhskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N2<p)
break;
pth=p*p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
pth=p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q*q;
if (N<qth)
break;
if (N==(pth*qth))
return(1);
if (N<(pth*qth))
break;
}
}
if (subcur==8)
return(0);
dhskip:
if ((subcur==0)&&(skip[8]!=0))
goto diskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N2<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q*q*q;
if (N<qth)
break;
if (N==(pth*qth))
return(1);
if (N<(pth*qth))
break;
}
}
if (subcur==9)
return(0);
diskip:
if ((subcur==0)&&(skip[9]!=0))
goto djskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N2<p)
break;
pth=p*p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q*q;
if (N<qth)
break;
qth=q*q*qth;
if (N<qth)
break;
if (N==(pth*qth))
return(1);
if (N<(pth*qth))
break;
}
}
if (subcur==10)
return(0);
djskip:
if ((subcur==0)&&(skip[10]!=0))
goto dkskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N3<p)
break;
pth=p*p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q;
if (N<qth)
break;
qth=pth*qth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
if (N==(qth*r))
return(1);
if (N<(qth*r))
break;
}
}
}
if (subcur==11)
return(0);
dkskip:
if ((subcur==0)&&(skip[11]!=0))
goto dlskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N5<p)
break;
pth=p*p*p;
if (N<pth)
break;
pth=p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*pth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
rth=r*qth;
if (N<rth)
break;
for (l=0; l<tsize; l++) {
if (i==l)
continue;
if (j==l)
continue;
if (k==l)
continue;
s=table[l];
if (N==(s*rth))
return(1);
if (N<(s*rth))
break;
}
}
}
}
if (subcur==12)
return(0);
dlskip:
if ((subcur==0)&&(skip[12]!=0))
goto dmskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N2<p)
break;
pth=p*p*p;
if (N<pth)
break;
pth=p*p*pth;
if (N<pth)
break;
for (j=i+1; j<tsize; j++) {
q=table[j];
qth=q*q*q;
if (N<qth)
break;
qth=q*q*qth;
if (N<qth)
break;
if (N==(pth*qth))
return(1);
if (N<(pth*qth))
break;
}
}
if (subcur==13)
return(0);
dmskip:
if ((subcur==0)&&(skip[13]!=0))
goto dnskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N2<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
pth=p*p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
if (N==(pth*q))
return(1);
if (N<(pth*q))
break;
}
}
if (subcur==14)
return(0);
dnskip:
if ((subcur==0)&&(skip[14]!=0))
goto doskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N2<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
pth=p*p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
if (N==(pth*q))
return(1);
if (N<(pth*q))
break;
}
}
if (subcur==15)
return(0);
doskip:
if ((subcur==0)&&(skip[15]!=0))
goto dpskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N3<p)
break;
pth=p*p*p;
if (N<pth)
break;
pth=p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q*q;
if (N<qth)
break;
qth=pth*qth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
if (N==(qth*r))
return(1);
if (N<(qth*r))
break;
}
}
}
if (subcur==16)
return(0);
dpskip:
if ((subcur==0)&&(skip[16]!=0))
goto dqskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N3<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
pth=p*p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*pth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
if (N==(qth*r))
return(1);
if (N<(qth*r))
break;
}
}
}
if (subcur==17)
return(0);
dqskip:
if ((subcur==0)&&(skip[17]!=0))
goto drskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N3<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q;
if (N<qth)
break;
qth=pth*qth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
if (N==(qth*r))
return(1);
if (N<(qth*r))
break;
}
}
}
if (subcur==18)
return(0);
drskip:
if ((subcur==0)&&(skip[18]!=0))
goto dsskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N2<p)
break;
pth=p*p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q;
if (N<qth)
break;
if (N==(pth*qth))
return(1);
if (N<(pth*qth))
break;
}
}
if (subcur==19)
return(0);
dsskip:
if ((subcur==0)&&(skip[19]!=0))
goto dtskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N2<p)
break;
pth=p*p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q*q;
if (N<qth)
break;
if (N==(pth*qth))
return(1);
if (N<(pth*qth))
break;
}
}
if (subcur==20)
return(0);
dtskip:
if ((subcur==0)&&(skip[20]!=0))
goto duskip;
for (i=0; i<tsize; i++) {
p=table[i];
if (N2<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
pth=p*p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q*q*q;
if (N<qth)
break;
if (N==(pth*qth))
return(1);
if (N<(pth*qth))
break;
}
}
if (subcur==21)
return(0);
duskip:
if ((subcur==0)&&(skip[21]!=0))
return(0);
for (i=0; i<tsize; i++) {
p=table[i];
if (N2<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q*q;
if (N<qth)
break;
qth=q*q*qth;
if (N<qth)
break;
if (N==(pth*qth))
return(1);
if (N<(pth*qth))
break;
}
}
return(0);
//
// 25
//
fzskip:
if (subcur==27)
goto ezskip;
if (subcur==26)
goto eyskip;
if (subcur==25)
goto exskip;
if (subcur==24)
goto ewskip;
if (subcur==23)
goto evskip;
if (subcur==22)
goto euskip;
if (subcur==21)
goto etskip;
if (subcur==20)
goto esskip;
if (subcur==19)
goto erskip;
if (subcur==18)
goto eqskip;
if (subcur==17)
goto epskip;
if (subcur==16)
goto eoskip;
if (subcur==15)
goto enskip;
if (subcur==14)
goto emskip;
if (subcur==13)
goto elskip;
if (subcur==12)
goto ekskip;
if (subcur==11)
goto ejskip;
if (subcur==10)
goto eiskip;
if (subcur==9)
goto ehskip;
if (subcur==8)
goto egskip;
if (subcur==7)
goto efskip;
if (subcur==6)
goto eeskip;
if (subcur==5)
goto edskip;
if (subcur==4)
goto ecskip;
if (subcur==3)
goto ebskip;
if (subcur==2)
if ((subcur==0)&&(skip[0]!=0))
for (i=0; i<tsize; i++) {      // p^4q^2rs
p=table[i];
if (N5<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q;
if (N<qth)
break;
qth=qth*pth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
rth=r*qth;
if (N<rth)
break;
for (l=0; l<tsize; l++) {
if (i==l)
continue;
if (j==l)
continue;
if (k==l)
continue;
s=table[l];
if (N==(s*rth))
return(1);
if (N<(s*rth))
break;
}
}
}
}
if (subcur==1)
return(0);
if ((subcur==0)&&(skip[1]!=0))
goto ebskip;
for (i=0; i<tsize; i++) {      // p^3qrst
p=table[i];
if (N7<p)
break;
pth=p*p*p;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*pth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
rth=r*qth;
if (N<rth)
break;
for (l=0; l<tsize; l++) {
if (i==l)
continue;
if (j==l)
continue;
if (k==l)
continue;
s=table[l];
sth=s*rth;
if (N<sth)
break;
for (m=0; m<tsize; m++) {
if (i==m)
continue;
if (j==m)
continue;
if (k==m)
continue;
if (l==m)
continue;
t=table[m];
if (N==(t*sth))
return(1);
if (N<(t*sth))
break;
}
}
}
}
}
if (subcur==2)
return(0);
ebskip:
if ((subcur==0)&&(skip[2]!=0))
goto ecskip;
for (i=0; i<tsize; i++) {      // p^4q^3r^2
p=table[i];
if (N3<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q*q;
if (N<qth)
break;
qth=pth*qth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
rth=r*r;
if (N<rth)
break;
if (N==(qth*rth))
return(1);
if (N<(qth*rth))
break;
}
}
}
if (subcur==3)
return(0);
ecskip:
if ((subcur==0)&&(skip[3]!=0))
goto edskip;
for (i=0; i<tsize; i++) {      // p^6q^3r
p=table[i];
if (N3<p)
break;
pth=p*p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q*q;
if (N<qth)
break;
qth=pth*qth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
if (N==(qth*r))
return(1);
if (N<(qth*r))
break;
}
}
}
if (subcur==4)
return(0);
edskip:
if ((subcur==0)&&(skip[4]!=0))
goto eeskip;
for (i=0; i<tsize; i++) {      // p^5q^2r^2
p=table[i];
if (N3<p)
break;
pth=p*p*p;
if (N<pth)
break;
pth=p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q;
if (N<qth)
break;
qth=pth*qth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
rth=r*r;
if (N==(qth*rth))
return(1);
if (N<(qth*rth))
break;
}
}
}
if (subcur==5)
return(0);
eeskip:
if ((subcur==0)&&(skip[5]!=0))
goto efskip;
for (i=0; i<tsize; i++) {      // p^12qr
p=table[i];
if (N3<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
pth=p*p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*pth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
if (N==(qth*r))
return(1);
if (N<(qth*r))
break;
}
}
}
if (subcur==6)
return(0);
efskip:
if ((subcur==0)&&(skip[6]!=0))
goto egskip;
for (i=0; i<tsize; i++) {      // p^13q^2
p=table[i];
if (N2<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q;
if (N<qth)
break;
if (N==(pth*qth))
return(1);
if (N<(pth*qth))
break;
}
}
if (subcur==7)
return(0);
egskip:
if ((subcur==0)&&(skip[7]!=0))
goto ehskip;
for (i=0; i<tsize; i++) {      // p^10q^3
p=table[i];
if (N2<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q*q;
if (N<qth)
break;
if (N==(pth*qth))
return(1);
if (N<(pth*qth))
break;
}
}
if (subcur==8)
return(0);
ehskip:
if ((subcur==0)&&(skip[8]!=0))
goto eiskip;
for (i=0; i<tsize; i++) {      // p^9q^4
p=table[i];
if (N2<p)
break;
pth=p*p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q*q*q;
if (N<qth)
break;
if (N==(pth*qth))
return(1);
if (N<(pth*qth))
break;
}
}
if (subcur==9)
return(0);
eiskip:
if ((subcur==0)&&(skip[9]!=0))
goto ejskip;
for (i=0; i<tsize; i++) {      // p^8q^5
p=table[i];
if (N2<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
pth=p*p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q*q;
if (N<qth)
break;
qth=q*q*qth;
if (N<qth)
break;
if (N==(pth*qth))
return(1);
if (N<(pth*qth))
break;
}
}
if (subcur==10)
return(0);
ejskip:
if ((subcur==0)&&(skip[10]!=0))
goto ekskip;
for (i=0; i<tsize; i++) {      // p^8q^2r
p=table[i];
if (N3<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
pth=p*p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q;
if (N<qth)
break;
qth=pth*qth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
if (N==(qth*r))
return(1);
if (N<(qth*r))
break;
}
}
}
if (subcur==11)
return(0);
ekskip:
if ((subcur==0)&&(skip[11]!=0))
goto elskip;
for (i=0; i<tsize; i++) {      // p^6qrs
p=table[i];
if (N5<p)
break;
pth=p*p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*pth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
rth=r*qth;
if (N<rth)
break;
for (l=k+1; l<tsize; l++) {
if (i==l)
continue;
if (j==l)
continue;
if (k==l)
continue;
s=table[l];
if (N==(s*rth))
return(1);
if (N<(s*rth))
break;
}
}
}
}
if (subcur==12)
return(0);
elskip:
if ((subcur==0)&&(skip[12]!=0))
goto emskip;
for (i=0; i<tsize; i++) {      // pqrstu
p=table[i];
if (N11<p)
break;
for (j=i+1; j<tsize; j++) {
q=table[j];
qth=q*p;
if (N<qth)
break;
for (k=j+1; k<tsize; k++) {
r=table[k];
rth=r*qth;
if (N<rth)
break;
for (l=k+1; l<tsize; l++) {
s=table[l];
sth=s*rth;
if (N<sth)
break;
for (m=l+1; m<tsize; m++) {
t=table[m];
tth=t*sth;
if (N<tth)
break;
for (n=m+1; n<tsize; n++) {
u=table[n];
if (N==(u*tth))
return(1);
if (N<(u*tth))
break;
}
}
}
}
}
}
if (subcur==13)
return(0);
emskip:
if ((subcur==0)&&(skip[13]!=0))
goto enskip;
for (i=0; i<tsize; i++) {      // p^6q^6
p=table[i];
if (N2<p)
break;
pth=p*p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
for (j=i+1; j<tsize; j++) {
q=table[j];
qth=q*q*q;
if (N<qth)
break;
qth=q*q*q*qth;
if (N<qth)
break;
if (N==(pth*qth))
return(1);
if (N<(pth*qth))
break;
}
}
if (subcur==14)
return(0);
enskip:
if ((subcur==0)&&(skip[14]!=0))
goto eoskip;
for (i=0; i<tsize; i++) {      // p^3q^3r^3
p=table[i];
if (N3<p)
break;
pth=p*p*p;
if (N<pth)
break;
for (j=i+1; j<tsize; j++) {
q=table[j];
qth=q*q*q;
if (N<qth)
break;
qth=pth*qth;
if (N<qth)
break;
for (k=j+1; k<tsize; k++) {
r=table[k];
rth=r*r*r;
if (N<rth)
break;
if (N==(qth*rth))
return(1);
if (N<(qth*rth))
break;
}
}
}
if (subcur==15)
return(0);
eoskip:
if ((subcur==0)&&(skip[15]!=0))
goto epskip;
for (i=0; i<tsize; i++) {      // p^2q^2r^2s
p=table[i];
if (N5<p)
break;
pth=p*p;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q;
if (N<qth)
break;
qth=qth*pth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
rth=r*r;
if (N<rth)
break;
rth=rth*qth;
if (N<rth)
break;
for (l=0; l<tsize; l++) {
if (i==l)
continue;
if (j==l)
continue;
if (k==l)
continue;
s=table[l];
if (N==(s*rth))
return(1);
if (N<(s*rth))
break;
}
}
}
}
if (subcur==16)
return(0);
epskip:
if ((subcur==0)&&(skip[16]!=0))
goto eqskip;
for (i=0; i<tsize; i++) {      // p^19q
p=table[i];
if (N2<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
pth=p*p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
if (N<q)
break;
if (N==(q*pth))
return(1);
if (N<(q*pth))
break;
}
}
if (subcur==17)
return(0);
eqskip:
if ((subcur==0)&&(skip[17]!=0))
goto erskip;
for (i=0; i<tsize; i++) {      // p^7q^3r
p=table[i];
if (N3<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q*q;
if (N<qth)
break;
qth=pth*qth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
if (N==(qth*r))
return(1);
if (N<(qth*r))
break;
}
}
}
if (subcur==18)
return(0);
erskip:
if ((subcur==0)&&(skip[18]!=0))
goto esskip;
for (i=0; i<tsize; i++) {      // p^6q^2r^2
p=table[i];
if (N3<p)
break;
pth=p*p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q;
if (N<qth)
break;
qth=pth*qth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
rth=r*r;
if (N<rth)
break;
if (N==(qth*rth))
return(1);
if (N<(qth*rth))
break;
}
}
}
if (subcur==19)
return(0);
esskip:
if ((subcur==0)&&(skip[19]!=0))
goto etskip;
for (i=0; i<tsize; i++) {      // p^9q^2r
p=table[i];
if (N3<p)
break;
pth=p*p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q;
if (N<qth)
break;
qth=pth*qth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
if (N==(qth*r))
return(1);
if (N<(qth*r))
break;
}
}
}
if (subcur==20)
return(0);
etskip:
if ((subcur==0)&&(skip[20]!=0))
goto euskip;
for (i=0; i<tsize; i++) {      // p^3q^3rs
p=table[i];
if (N5<p)
break;
pth=p*p*p;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q*q;
if (N<qth)
break;
qth=qth*pth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
rth=r*qth;
if (N<rth)
break;
for (l=0; l<tsize; l++) {
if (i==l)
continue;
if (j==l)
continue;
if (k==l)
continue;
s=table[l];
if (N==(s*rth))
return(1);
if (N<(s*rth))
break;
}
}
}
}
if (subcur==21)
return(0);
euskip:
if ((subcur==0)&&(skip[21]!=0))
goto evskip;
for (i=0; i<tsize; i++) {      // p^7qrs
p=table[i];
if (N5<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*pth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
rth=r*qth;
if (N<rth)
break;
for (l=0; l<tsize; l++) {
if (i==l)
continue;
if (j==l)
continue;
if (k==l)
continue;
s=table[l];
if (N==(s*rth))
return(1);
if (N<(s*rth))
break;
}
}
}
}
if (subcur==22)
return(0);
evskip:
if ((subcur==0)&&(skip[22]!=0))
goto ewskip;
for (i=0; i<tsize; i++) {      // p^7q^6
p=table[i];
if (N2<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q*q;
if (N<qth)
break;
qth=q*q*q*qth;
if (N<qth)
break;
if (N==(qth*pth))
return(1);
if (N<(qth*pth))
break;
}
}
if (subcur==23)
return(0);
ewskip:
if ((subcur==0)&&(skip[23]!=0))
goto exskip;
for (i=0; i<tsize; i++) {      // p^10q^4
p=table[i];
if (N2<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q*q*q;
if (N<qth)
break;
if (N==(qth*pth))
return(1);
if (N<(qth*pth))
break;
}
}
if (subcur==24)
return(0);
exskip:
if ((subcur==0)&&(skip[24]!=0))
goto eyskip;
for (i=0; i<tsize; i++) {      // p^11q^3
p=table[i];
if (N2<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
pth=p*p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q*q;
if (N<qth)
break;
if (N==(qth*pth))
return(1);
if (N<(qth*pth))
break;
}
}
if (subcur==25)
return(0);
eyskip:
if ((subcur==0)&&(skip[25]!=0))
goto ezskip;
for (i=0; i<tsize; i++) {      // p^14q^2
p=table[i];
if (N2<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
pth=p*p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q;
if (N<qth)
break;
if (N==(qth*pth))
return(1);
if (N<(qth*pth))
break;
}
}
if (subcur==26)
return(0);
ezskip:
if ((subcur==0)&&(skip[26]!=0))
return(0);
for (i=0; i<tsize; i++) {      // p^13qr
p=table[i];
if (N3<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*pth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
if (N==(qth*r))
return(1);
if (N<(qth*r))
break;
}
}
}
return(0);
//
// 27
//
fjskip:
if (subcur==35)
goto gsskip;
if (subcur==34)
goto grskip;
if (subcur==33)
goto gqskip;
if (subcur==32)
goto gpskip;
if (subcur==31)
goto goskip;
if (subcur==30)
goto gnskip;
if (subcur==29)
goto gmskip;
if (subcur==28)
goto glskip;
if (subcur==27)
goto gkskip;
if (subcur==26)
goto gjskip;
if (subcur==25)
goto giskip;
if (subcur==24)
goto ghskip;
if (subcur==23)
goto ggskip;
if (subcur==22)
goto gfskip;
if (subcur==21)
goto geskip;
if (subcur==20)
goto gdskip;
if (subcur==19)
goto gcskip;
if (subcur==18)
goto gbskip;
if (subcur==17)
if (subcur==16)
goto fhskip;
if (subcur==15)
goto fgskip;
if (subcur==14)
goto ffskip;
if (subcur==13)
goto feskip;
if (subcur==12)
goto fdskip;
if (subcur==11)
goto fcskip;
if (subcur==10)
goto fbskip;
if (subcur==9)
if (subcur==8)
goto fiskip;
if (subcur==7)
goto fyskip;
if (subcur==6)
goto fxskip;
if (subcur==5)
goto fwskip;
if (subcur==4)
goto fvskip;
if (subcur==3)
goto fuskip;
if (subcur==2)
goto ftskip;
if ((subcur==0)&&(skip[0]!=0))
goto ftskip;
for (i=0; i<tsize; i++) {      // p^5q^2rs
p=table[i];
if (N5<p)
break;
pth=p*p*p;
if (N<pth)
break;
pth=p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q;
if (N<qth)
break;
qth=qth*pth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
rth=r*qth;
if (N<rth)
break;
for (l=0; l<tsize; l++) {
if (i==l)
continue;
if (j==l)
continue;
if (k==l)
continue;
s=table[l];
if (N==(s*rth))
return(1);
if (N<(s*rth))
break;
}
}
}
}
if (subcur==1)
return(0);
ftskip:
if ((subcur==0)&&(skip[1]!=0))
goto fuskip;
for (i=0; i<tsize; i++) {      // p^3q^2r^2s
p=table[i];
if (N5<p)
break;
pth=p*p*p;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q;
if (N<qth)
break;
qth=qth*pth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
rth=r*r;
if (N<rth)
break;
rth=rth*qth;
if (N<rth)
break;
for (l=0; l<tsize; l++) {
if (i==l)
continue;
if (j==l)
continue;
if (k==l)
continue;
s=table[l];
if (N==(s*rth))
return(1);
if (N<(s*rth))
break;
}
}
}
}
if (subcur==2)
return(0);
fuskip:
if ((subcur==0)&&(skip[2]!=0))
goto fvskip;
for (i=0; i<tsize; i++) {   // p^8qrs
p=table[i];
if (N5<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
pth=p*p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*pth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
rth=r*qth;
if (N<rth)
break;
for (l=0; l<tsize; l++) {
if (i==l)
continue;
if (j==l)
continue;
if (k==l)
continue;
s=table[l];
if (N==(s*rth))
return(1);
if (N<(s*rth))
break;
}
}
}
}
if (subcur==3)
return(0);
fvskip:
if ((subcur==0)&&(skip[3]!=0))
goto fwskip;
for (i=0; i<tsize; i++) {    // p^2q^2rst
p=table[i];
if (N7<p)
break;
pth=p*p;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q;
if (N<qth)
break;
qth=qth*pth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
rth=r*qth;
if (N<rth)
break;
for (l=0; l<tsize; l++) {
if (i==l)
continue;
if (j==l)
continue;
if (k==l)
continue;
s=table[l];
sth=s*rth;
if (N<sth)
break;
for (m=0; m<tsize; m++) {
if (i==m)
continue;
if (j==m)
continue;
if (k==m)
continue;
if (l==m)
continue;
t=table[m];
if (N==(t*sth))
return(1);
if (N<(t*sth))
break;
}
}
}
}
}
if (subcur==4)
return(0);
fwskip:
if ((subcur==0)&&(skip[4]!=0))
goto fxskip;
for (i=0; i<tsize; i++) {    // p^10q^2r
p=table[i];
if (N3<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q;
if (N<qth)
break;
qth=qth*pth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
if (N==(r*qth))
return(1);
if (N<(r*qth))
break;
}
}
}
if (subcur==5)
return(0);
fxskip:
if ((subcur==0)&&(skip[5]!=0))
goto fyskip;
for (i=0; i<tsize; i++) {    // p^8q^3r
p=table[i];
if (N3<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
pth=p*p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q*q;
if (N<qth)
break;
qth=qth*pth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
if (N==(r*qth))
return(1);
if (N<(r*qth))
break;
}
}
}
if (subcur==6)
return(0);
fyskip:
if ((subcur==0)&&(skip[6]!=0))
goto fiskip;
for (i=0; i<tsize; i++) {     // p^5q^3r^2
p=table[i];
if (N3<p)
break;
pth=p*p*p;
if (N<pth)
break;
pth=p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q*q;
if (N<qth)
break;
qth=qth*pth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
rth=r*r;
if (N<rth)
break;
if (N==(rth*qth))
return(1);
if (N<(rth*qth))
break;
}
}
}
if (subcur==7)
return(0);
fiskip:
if ((subcur==0)&&(skip[7]!=0))
for (i=0; i<tsize; i++) {     // p^7q^2r^2
p=table[i];
if (N3<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q;
if (N<qth)
break;
qth=qth*pth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
rth=r*r;
if (N<rth)
break;
if (N==(rth*qth))
return(1);
if (N<(rth*qth))
break;
}
}
}
if (subcur==8)
return(0);
if ((subcur==0)&&(skip[8]!=0))
goto fbskip;
for (i=0; i<tsize; i++) {     // p^14qr
p=table[i];
if (N3<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
pth=p*p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*pth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
if (N==(r*qth))
return(1);
if (N<(r*qth))
break;
}
}
}
if (subcur==9)
return(0);
fbskip:
if ((subcur==0)&&(skip[9]!=0))
goto fcskip;
for (i=0; i<tsize; i++) {     // p^12q^3
p=table[i];
if (N2<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
pth=p*p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q*q;
if (N<qth)
break;
if (N==(pth*qth))
return(1);
if (N<(pth*qth))
break;
}
}
if (subcur==10)
return(0);
fcskip:
if ((subcur==0)&&(skip[10]!=0))
goto fdskip;
for (i=0; i<tsize; i++) {     // p^11q^4
p=table[i];
if (N2<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
pth=p*p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q*q*q;
if (N<qth)
break;
if (N==(pth*qth))
return(1);
if (N<(pth*qth))
break;
}
}
if (subcur==11)
return(0);
fdskip:
if ((subcur==0)&&(skip[11]!=0))
goto feskip;
for (i=0; i<tsize; i++) {     // p^9q^5
p=table[i];
if (N2<p)
break;
pth=p*p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q*q;
if (N<qth)
break;
qth=q*q*qth;
if (N<qth)
break;
if (N==(pth*qth))
return(1);
if (N<(pth*qth))
break;
}
}
if (subcur==12)
return(0);
feskip:
if ((subcur==0)&&(skip[12]!=0))
goto ffskip;
for (i=0; i<tsize; i++) {     // p^8q^3
p=table[i];
if (N2<p)
break;
pth=p*p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
pth=p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q*q;
if (N<qth)
break;
qth=q*q*q*qth;
if (N<qth)
break;
if (N==(pth*qth))
return(1);
if (N<(pth*qth))
break;
}
}
if (subcur==13)
return(0);
ffskip:
if ((subcur==0)&&(skip[13]!=0))
goto fgskip;
for (i=0; i<tsize; i++) {     // p^15q^2
p=table[i];
if (N2<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
pth=p*p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q;
if (N<qth)
break;
if (N==(pth*qth))
return(1);
if (N<(pth*qth))
break;
}
}
if (subcur==14)
return(0);
fgskip:
if ((subcur==0)&&(skip[14]!=0))
goto fhskip;
for (i=0; i<tsize; i++) {      // p^19q
p=table[i];
if (N2<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
if (N==(pth*q))
return(1);
if (N<(pth*q))
break;
}
}
if (subcur==15)
return(0);
fhskip:
if ((subcur==0)&&(skip[15]!=0))
for (i=0; i<tsize; i++) {      // p^7q^7
p=table[i];
if (N2<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
for (j=i+1; j<tsize; j++) {
q=table[j];
qth=q*q*q*q;
if (N<qth)
break;
qth=q*q*q*qth;
if (N<qth)
break;
if (N==(pth*qth))
return(1);
if (N<(pth*qth))
break;
}
}
if (subcur==16)
return(0);
if ((subcur==0)&&(skip[16]!=0))
goto gbskip;
for (i=0; i<tsize; i++) {	// p^9qrs
p=table[i];
if (N5<p)
break;
pth=p*p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*pth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
rth=r*qth;
if (N<rth)
break;
for (l=0; l<tsize; l++) {
if (i==l)
continue;
if (j==l)
continue;
if (k==l)
continue;
s=table[l];
if (N==(s*rth))
return(1);
if (N<(s*rth))
break;
}
}
}
}
if (subcur==17)
return(0);
gbskip:
if ((subcur==0)&&(skip[17]!=0))
goto gcskip;
for (i=0; i<tsize; i++) {	// p^3q^2rst
p=table[i];
if (N7<p)
break;
pth=p*p*p;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q;
if (N<qth)
break;
qth=qth*pth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
rth=r*qth;
if (N<rth)
break;
for (l=0; l<tsize; l++) {
if (i==l)
continue;
if (j==l)
continue;
if (k==l)
continue;
s=table[l];
sth=s*rth;
if (N<sth)
break;
for (m=0; m<tsize; m++) {
if (i==m)
continue;
if (j==m)
continue;
if (k==m)
continue;
if (l==m)
continue;
t=table[m];
if (N==(t*sth))
return(1);
if (N<(t*sth))
break;
}
}
}
}
}
if (subcur==18)
return(0);
gcskip:
if ((subcur==0)&&(skip[18]!=0))
goto gdskip;
for (i=0; i<tsize; i++) {      // p^11q^2r
p=table[i];
if (N3<p)
break;
pth=p*p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
pth=p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q;
if (N<qth)
break;
qth=qth*pth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
if (N==(r*qth))
return(1);
if (N<(r*qth))
break;
}
}
}
if (subcur==19)
return(0);
gdskip:
if ((subcur==0)&&(skip[19]!=0))
goto geskip;
for (i=0; i<tsize; i++) {	  // p^9q^3r
p=table[i];
if (N3<p)
break;
pth=p*p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q*q;
if (N<qth)
break;
qth=qth*pth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
if (N==(r*qth))
return(1);
if (N<(r*qth))
break;
}
}
}
if (subcur==20)
return(0);
geskip:
if ((subcur==0)&&(skip[20]!=0))
goto gfskip;
for (i=0; i<tsize; i++) {      // p^8q^2r^2
p=table[i];
if (N3<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
pth=p*p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q;
if (N<qth)
break;
qth=qth*pth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
rth=r*r;
if (N<rth)
break;
if (N==(rth*qth))
return(1);
if (N<(rth*qth))
break;
}
}
}
if (subcur==21)
return(0);
gfskip:
if ((subcur==0)&&(skip[21]!=0))
goto ggskip;
for (i=0; i<tsize; i++) {      // p^7q^3r^2
p=table[i];
if (N3<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q*q;
if (N<qth)
break;
qth=qth*pth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
rth=r*r;
if (N<rth)
break;
if (N==(rth*qth))
return(1);
if (N<(rth*qth))
break;
}
}
}
if (subcur==22)
return(0);
ggskip:
if ((subcur==0)&&(skip[22]!=0))
goto ghskip;
for (i=0; i<tsize; i++) {	// p^6q^2rs
p=table[i];
if (N5<p)
break;
pth=p*p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q;
if (N<qth)
break;
qth=qth*pth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
rth=r*qth;
if (N<rth)
break;
for (l=0; l<tsize; l++) {
if (i==l)
continue;
if (j==l)
continue;
if (k==l)
continue;
s=table[l];
if (N==(s*rth))
return(1);
if (N<(s*rth))
break;
}
}
}
}
if (subcur==23)
return(0);
ghskip:
if ((subcur==0)&&(skip[23]!=0))
goto giskip;
for (i=0; i<tsize; i++) {	// p^4q^2r^2s
p=table[i];
if (N5<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q;
if (N<qth)
break;
qth=qth*pth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
rth=r*r;
if (N<rth)
break;
rth=rth*qth;
if (N<rth)
break;
for (l=0; l<tsize; l++) {
if (i==l)
continue;
if (j==l)
continue;
if (k==l)
continue;
s=table[l];
if (N==(s*rth))
return(1);
if (N<(s*rth))
break;
}
}
}
}
if (subcur==24)
return(0);
giskip:
if ((subcur==0)&&(skip[24]!=0))
goto gjskip;
for (i=0; i<tsize; i++) {	// p^2q^2r^2s^2
p=table[i];
if (N5<p)
break;
pth=p*p;
if (N<pth)
break;
for (j=i+1; j<tsize; j++) {
q=table[j];
qth=q*q;
if (N<qth)
break;
qth=qth*pth;
if (N<qth)
break;
for (k=j+1; k<tsize; k++) {
r=table[k];
rth=r*r;
if (N<rth)
break;
rth=rth*qth;
if (N<rth)
break;
for (l=k+1; l<tsize; l++) {
s=table[l];
sth=s*s;
if (N<sth)
break;
if (N==(sth*rth))
return(1);
if (N<(sth*rth))
break;
}
}
}
}
if (subcur==25)
return(0);
gjskip:
if ((subcur==0)&&(skip[25]!=0))
goto gkskip;
for (i=0; i<tsize; i++) {      // p^14qr
p=table[i];
if (N3<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
pth=p*p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
if (N<q)
break;
qth=q*pth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
if (N==(r*qth))
return(1);
if (N<(r*qth))
break;
}
}
}
if (subcur==26)
return(0);
gkskip:
if ((subcur==0)&&(skip[26]!=0))
goto glskip;
for (i=0; i<tsize; i++) {   // p^4qrst
p=table[i];
if (N7<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*pth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
rth=r*qth;
if (N<rth)
break;
for (l=0; l<tsize; l++) {
if (i==l)
continue;
if (j==l)
continue;
if (k==l)
continue;
s=table[l];
sth=s*rth;
if (N<sth)
break;
for (m=0; m<tsize; m++) {
if (i==m)
continue;
if (j==m)
continue;
if (k==m)
continue;
if (l==m)
continue;
t=table[m];
if (N==(t*sth))
return(1);
if (N<(t*sth))
break;
}
}
}
}
}
if (subcur==27)
return(0);
glskip:
if ((subcur==0)&&(skip[27]!=0))
goto gmskip;
for (i=0; i<tsize; i++) {   // p^2q^2r^2st
p=table[i];
if (N7<p)
break;
pth=p*p;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q;
if (N<qth)
break;
qth=qth*pth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
rth=r*r;
if (N<rth)
break;
rth=rth*qth;
if (N<rth)
break;
for (l=0; l<tsize; l++) {
if (i==l)
continue;
if (j==l)
continue;
if (k==l)
continue;
s=table[l];
sth=s*rth;
if (N<sth)
break;
for (m=0; m<tsize; m++) {
if (i==m)
continue;
if (j==m)
continue;
if (k==m)
continue;
if (l==m)
continue;
t=table[m];
if (N==(t*sth))
return(1);
if (N<(t*sth))
break;
}
}
}
}
}
if (subcur==28)
return(0);
gmskip:
if ((subcur==0)&&(skip[28]!=0))
goto gnskip;
for (i=0; i<tsize; i++) {    // p^2qrstu
p=table[i];
if (N11<p)
break;
pth=p*p;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*pth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
rth=r*qth;
if (N<rth)
break;
for (l=0; l<tsize; l++) {
if (i==l)
continue;
if (j==l)
continue;
if (k==l)
continue;
s=table[l];
sth=s*rth;
if (N<sth)
break;
for (m=0; m<tsize; m++) {
if (i==m)
continue;
if (j==m)
continue;
if (k==m)
continue;
if (l==m)
continue;
t=table[m];
tth=t*sth;
if (N<tth)
break;
for (n=0; n<tsize; n++) {
if (i==n)
continue;
if (j==n)
continue;
if (k==n)
continue;
if (l==n)
continue;
if (m==n)
continue;
u=table[n];
if (N==(u*tth))
return(1);
if (N<(u*tth))
break;
}
}
}
}
}
}
if (subcur==29)
return(0);
gnskip:
if ((subcur==0)&&(skip[29]!=0))
goto goskip;
for (i=0; i<tsize; i++) {	// p^5q^2r^2s
p=table[i];
if (N5<p)
break;
pth=p*p*p;
if (N<pth)
break;
pth=p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q;
if (N<qth)
break;
qth=qth*pth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
rth=r*r;
if (N<rth)
break;
rth=rth*qth;
if (N<rth)
break;
for (l=0; l<tsize; l++) {
if (i==l)
continue;
if (j==l)
continue;
if (k==l)
continue;
s=table[l];
if (N==(s*rth))
return(1);
if (N<(s*rth))
break;
}
}
}
}
if (subcur==30)
return(0);
goskip:
if ((subcur==0)&&(skip[30]!=0))
goto gpskip;
for (i=0; i<tsize; i++) {	// p^5q^3rs
p=table[i];
if (N5<p)
break;
pth=p*p*p;
if (N<pth)
break;
pth=p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q*q;
if (N<qth)
break;
qth=qth*pth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
rth=r*qth;
if (N<rth)
break;
for (l=0; l<tsize; l++) {
if (i==l)
continue;
if (j==l)
continue;
if (k==l)
continue;
s=table[l];
if (N==(s*rth))
return(1);
if (N<(s*rth))
break;
}
}
}
}
if (subcur==31)
return(0);
gpskip:
if ((subcur==0)&&(skip[31]!=0))
goto gqskip;
for (i=0; i<tsize; i++) {	// p^4q^3rs
p=table[i];
if (N5<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q*q;
if (N<qth)
break;
qth=qth*pth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
rth=r*qth;
if (N<rth)
break;
for (l=0; l<tsize; l++) {
if (i==l)
continue;
if (j==l)
continue;
if (k==l)
continue;
s=table[l];
if (N==(s*rth))
return(1);
if (N<(s*rth))
break;
}
}
}
}
if (subcur==32)
return(0);
gqskip:
if ((subcur==0)&&(skip[32]!=0))
goto grskip;
for (i=0; i<tsize; i++) {	// p^4q^4rs
p=table[i];
if (N5<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q*q*q;
if (N<qth)
break;
qth=qth*pth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
rth=r*qth;
if (N<rth)
break;
for (l=0; l<tsize; l++) {
if (i==l)
continue;
if (j==l)
continue;
if (k==l)
continue;
s=table[l];
if (N==(s*rth))
return(1);
if (N<(s*rth))
break;
}
}
}
}
if (subcur==33)
return(0);
grskip:
if ((subcur==0)&&(skip[33]!=0))
goto gsskip;
for (i=0; i<tsize; i++) {	// p^4q^2r^2s
p=table[i];
if (N5<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q;
if (N<qth)
break;
qth=qth*pth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
rth=r*r;
if (N<rth)
break;
rth=rth*qth;
if (N<rth)
break;
for (l=0; l<tsize; l++) {
if (i==l)
continue;
if (j==l)
continue;
if (k==l)
continue;
s=table[l];
if (N==(s*rth))
return(1);
if (N<(s*rth))
break;
}
}
}
}
if (subcur==34)
return(0);
gsskip:
if ((subcur==0)&&(skip[34]!=0))
return(0);
for (i=0; i<tsize; i++) {	// p^7q^2rs
p=table[i];
if (N5<p)
break;
pth=p*p*p*p;
if (N<pth)
break;
pth=p*p*p*pth;
if (N<pth)
break;
for (j=0; j<tsize; j++) {
if (i==j)
continue;
q=table[j];
qth=q*q;
if (N<qth)
break;
qth=qth*pth;
if (N<qth)
break;
for (k=0; k<tsize; k++) {
if (i==k)
continue;
if (j==k)
continue;
r=table[k];
rth=r*qth;
if (N<rth)
break;
for (l=0; l<tsize; l++) {
if (i==l)
continue;
if (j==l)
continue;
if (k==l)
continue;
s=table[l];
if (N==(s*rth))
return(1);
if (N<(s*rth))
break;
}
}
}
}
return(0);
}
```