﻿ Vandiver's theorem
```/*****************************************************************************/
/*									     */
/*  FACTOR A, B, A-B, AND A+B						     */
/*  11/25/06 (dkc)							     */
/*									     */
/*  Input to this program is a triplet of (a,b) values.  These (a,b) values  */
/*  are different representations of T**p or p*T**p.  a, b, a-b, and a+b     */
/*  are factored for each (a,b) value.					     */
/*									     */
/*  Note: a-b and a+b are switched for [(a**p-b**p)/(a-b)] (the third (a,b)  */
/*  value).								     */
/*									     */
/*****************************************************************************/
#include <stdio.h>
#include <math.h>
#include "table10.h"
int main ()
{
int insize=408;
unsigned int input[408*4]={
0x25c01a,   0x2400b5,  0x1e70025,  0x3030001,
0x25c01a,    0x1bf65,  0x1e70025,  0x3030001,
0x2400b5,    0x1bf65,  0x1e70025,  0x3030001,
0x25bbf3,   0x228c1e,  0x3a90013,  0x3030000,
0x25bbf3,    0x32fd5,  0x3a90013,  0x3030000,
0x228c1e,    0x32fd5,  0x3a90013,  0x3030000,
0x25b880,   0x1d54bd,   0xa30049,  0x3030000,
0x25b880,    0x863c3,   0xa30049,  0x3030000,
0x1d54bd,    0x863c3,   0xa30049,  0x3030000,
0x1a18d0,    0xb36dd,  0x3730013,  0x3030001,
0x2504cc,   0x1b370f,  0x2650013,  0x3030000,
0x2504cc,    0x9cdbd,  0x2650013,  0x3030000,
0x1b370f,    0x9cdbd,  0x2650013,  0x3030000,
0x24d3a2,   0x20121b,  0x2770013,  0x3030000,
0x24d3a2,    0x4c187,  0x2770013,  0x3030000,
0x20121b,    0x4c187,  0x2770013,  0x3030001,
0x24a42f,   0x166ac3,  0x1330025,  0x3030000,
0x24a42f,    0xe396c,  0x1330025,  0x3030000,
0x166ac3,    0xe396c,  0x1330025,  0x3030000,
0x236a85,   0x15cbb9,  0x1b10025,  0x3030001,
0x236a85,    0xd9ecc,  0x1b10025,  0x3030001,
0x15cbb9,    0xd9ecc,  0x1b10025,  0x3030001,
0x230761,   0x11cba0,  0x2410013,  0x3030000,
0x230761,   0x113bc1,  0x2410013,  0x3030000,
0x11cba0,   0x113bc1,  0x2410013,  0x3030000,
0x21a861,   0x1e05ed,  0x1330025,  0x3030000,
0x21a861,    0x3a274,  0x1330025,  0x3030000,
0x1e05ed,    0x3a274,  0x1330025,  0x3030000,
0x215059,   0x151260,  0x32b0013,  0x3030000,
0x215059,    0xc3df9,  0x32b0013,  0x3030000,
0x151260,    0xc3df9,  0x32b0013,  0x3030000,
0x20fdf0,   0x167441,  0x32b0013,  0x3030001,
0x20fdf0,    0xa89af,  0x32b0013,  0x3030001,
0x167441,    0xa89af,  0x32b0013,  0x3030001,
0x20edb0,    0x61d27,  0x2410013,  0x3030000,
0x209c33,   0x1cf2ef,  0x1b10025,  0x3030000,
0x209c33,    0x3a944,  0x1b10025,  0x3030000,
0x1cf2ef,    0x3a944,  0x1b10025,  0x3030000,
0x1ebbaf,   0x14cd2f,  0x18d0025,  0x3030000,
0x1ebbaf,    0x9ee80,  0x18d0025,  0x3030000,
0x14cd2f,    0x9ee80,  0x18d0025,  0x3030000,
0x1ea74b,   0x16aaac,  0x21d0013,  0x3030000,
0x1ea74b,    0x7fc9f,  0x21d0013,  0x3030000,
0x16aaac,    0x7fc9f,  0x21d0013,  0x3030000,
0x1e847f,   0x1dcbed,  0x33d0013,  0x3030001,
0x1e847f,     0xb892,  0x33d0013,  0x3030001,
0x1dcbed,     0xb892,  0x33d0013,  0x3030001,
0x1e808d,   0x134046,   0xc70049,  0x3030000,
0x1e808d,    0xb4047,   0xc70049,  0x3030000,
0x134046,    0xb4047,   0xc70049,  0x3030000,
0x1e4538,   0x134059,  0x10f0025,  0x3030000,
0x1e4538,    0xb04df,  0x10f0025,  0x3030000,
0x134059,    0xb04df,  0x10f0025,  0x3030000,
0x1dc4c1,   0x137072,  0x20b0013,  0x3030000,
0x1dc4c1,    0xa544f,  0x20b0013,  0x3030000,
0x137072,    0xa544f,  0x20b0013,  0x3030000,
0x1dba32,   0x139dc9,  0x20b0013,  0x3030000,
0x1dba32,    0xa1c69,  0x20b0013,  0x3030000,
0x139dc9,    0xa1c69,  0x20b0013,  0x3030000,
0x1d71b6,   0x153ebd,  0x2f50013,  0x3030000,
0x1d71b6,    0x832f9,  0x2f50013,  0x3030000,
0x153ebd,    0x832f9,  0x2f50013,  0x3030000,
0x1d71a5,   0x18168d,  0x18d0025,  0x3030001,
0x1d71a5,    0x55b18,  0x18d0025,  0x3030001,
0x18168d,    0x55b18,  0x18d0025,  0x3030001,
0x1d4db7,    0xf5a78,  0x2e30013,  0x3030000,
0x1d4db7,    0xdf33f,  0x2e30013,  0x3030000,
0xf5a78,    0xdf33f,  0x2e30013,  0x3030000,
0x1d0a13,   0x19c037,  0x21d0013,  0x3030001,
0x1d0a13,    0x349dc,  0x21d0013,  0x3030000,
0x19c037,    0x349dc,  0x21d0013,  0x3030000,
0x1cee6f,   0x123e5d,  0x17b0025,  0x3030001,
0x1cee6f,    0xab012,  0x17b0025,  0x3030001,
0x123e5d,    0xab012,  0x17b0025,  0x3030001,
0x1ce850,   0x1740dd,  0x10f0025,  0x3030000,
0x1ce850,    0x5a773,  0x10f0025,  0x3030000,
0x1740dd,    0x5a773,  0x10f0025,  0x3030000,
0x1c8bb9,   0x10d1df,   0x7f006d,  0x3030001,
0x1c8bb9,    0xbb9da,   0x7f006d,  0x3030001,
0x10d1df,    0xbb9da,   0x7f006d,  0x3030001,
0x1bbc28,   0x1616cf,  0x2e30013,  0x3030001,
0x1bbc28,    0x5a559,  0x2e30013,  0x3030001,
0x1616cf,    0x5a559,  0x2e30013,  0x3030001,
0x1ba865,   0x19a9ff,   0xc70049,  0x3030000,
0x1ba865,    0x1fe66,   0xc70049,  0x3030000,
0x19a9ff,    0x1fe66,   0xc70049,  0x3030000,
0x1b8b15,   0x1651ce,  0x17b0025,  0x3030000,
0x1b8b15,    0x53947,  0x17b0025,  0x3030000,
0x1651ce,    0x53947,  0x17b0025,  0x3030000,
0x1b8196,   0x18f2b1,  0x2f50013,  0x3030000,
0x1b8196,    0x28ee5,  0x2f50013,  0x3030000,
0x18f2b1,    0x28ee5,  0x2f50013,  0x3030000,
0x1b2449,    0xf97fd,   0x7f0049,  0x3030000,
0x1b2449,    0xb8c4c,   0x7f0049,  0x3030000,
0xf97fd,    0xb8c4c,   0x7f0049,  0x3030000,
0x1b1e61,    0xee62e,  0x1e70013,  0x3030000,
0x1b1e61,    0xc3833,  0x1e70013,  0x3030001,
0xee62e,    0xc3833,  0x1e70013,  0x3030000,
0x1b086f,   0x101d84,   0x250013,  0x3060001,
0x1b086f,    0xaeaeb,   0x250013,  0x3060001,
0x101d84,    0xaeaeb,   0x250013,  0x3060001,
0x1ac405,   0x16587b,   0x7f006d,  0x3030000,
0x1ac405,    0x46b8a,   0x7f006d,  0x3030000,
0x16587b,    0x46b8a,   0x7f006d,  0x3030000,
0x1abb19,    0xe73fd,   0xb50049,  0x3030000,
0x1abb19,    0xc471c,   0xb50049,  0x3030000,
0xe73fd,    0xc471c,   0xb50049,  0x3030000,
0x199205,   0x14ec21,   0x7f0049,  0x3030000,
0x199205,    0x4a5e4,   0x7f0049,  0x3030000,
0x14ec21,    0x4a5e4,   0x7f0049,  0x3030000,
0x18dd0b,   0x15e759,  0x1e70013,  0x3030000,
0x18dd0b,    0x2f5b2,  0x1e70013,  0x3030000,
0x15e759,    0x2f5b2,  0x1e70013,  0x3030000,
0x189324,   0x1661c5,   0x250013,  0x3060000,
0x189324,    0x2315f,   0x250013,  0x3060000,
0x1661c5,    0x2315f,   0x250013,  0x3060000,
0x17accc,   0x16a401,   0xb50049,  0x3030000,
0x17accc,    0x108cb,   0xb50049,  0x3030000,
0x16a401,    0x108cb,   0xb50049,  0x3030000,
0x16f73f,    0xddc63,  0x2770013,  0x3030001,
0x16799b,    0xff7e7,  0x2770013,  0x3030000,
0x16799b,    0x681b4,  0x2770013,  0x3030000,
0xff7e7,    0x681b4,  0x2770013,  0x3030000,
0x1659bf,    0xf5ec1,   0xa30049,  0x3030000,
0x1659bf,    0x6fafe,   0xa30049,  0x3030000,
0xf5ec1,    0x6fafe,   0xa30049,  0x3030000,
0x1650d0,    0xf16af,  0x1b10013,  0x3030000,
0x1650d0,    0x73a21,  0x1b10013,  0x3030000,
0xf16af,    0x73a21,  0x1b10013,  0x3030000,
0x159c0b,    0xc1822,   0x6d0049,  0x3030000,
0x159c0b,    0x983e9,   0x6d0049,  0x3030000,
0xc1822,    0x983e9,   0x6d0049,  0x3030000,
0x156949,    0xf9b83,  0x2650013,  0x3030000,
0x156949,    0x5cdc6,  0x2650013,  0x3030000,
0xf9b83,    0x5cdc6,  0x2650013,  0x3030000,
0x153a1a,    0xc6e47,  0x1330025,  0x3030000,
0x153a1a,    0x8cbd3,  0x1330025,  0x3030000,
0xc6e47,    0x8cbd3,  0x1330025,  0x3030000,
0x1519f7,   0x122fbe,   0xa30049,  0x3030000,
0x1519f7,    0x2ea39,   0xa30049,  0x3030000,
0x122fbe,    0x2ea39,   0xa30049,  0x3030000,
0x141e51,   0x1213e6,  0x2650013,  0x3030000,
0x141e51,    0x20a6b,  0x2650013,  0x3030000,
0x1213e6,    0x20a6b,  0x2650013,  0x3030000,
0x141a40,   0x135139,  0x1b10013,  0x3030000,
0x141a40,     0xc907,  0x1b10013,  0x3030000,
0x135139,     0xc907,  0x1b10013,  0x3030001,
0x13ea13,    0xd039d,  0x2410013,  0x3030000,
0x13ea13,    0x6e676,  0x2410013,  0x3030000,
0xd039d,    0x6e676,  0x2410013,  0x3030000,
0x13afa6,   0x10f489,  0x1330025,  0x3030000,
0x13afa6,    0x2bb1d,  0x1330025,  0x3030000,
0x10f489,    0x2bb1d,  0x1330025,  0x3030000,
0x134534,    0xe3f1d,  0x18d0013,  0x3030000,
0x134534,    0x50617,  0x18d0013,  0x3030000,
0xe3f1d,    0x50617,  0x18d0013,  0x3030001,
0x1332d7,    0xb2480,   0xc70025,  0x3030000,
0x1332d7,    0x80e57,   0xc70025,  0x3030000,
0xb2480,    0x80e57,   0xc70025,  0x3030000,
0x12f031,   0x1292f3,   0x6d0049,  0x3030000,
0x12f031,     0x5d3e,   0x6d0049,  0x3030000,
0x1292f3,     0x5d3e,   0x6d0049,  0x3030000,
0x12961f,    0xa9b9e,  0x17b0013,  0x3030000,
0x12961f,    0x7fa81,  0x17b0013,  0x3030000,
0xa9b9e,    0x7fa81,  0x17b0013,  0x3030000,
0x12436e,    0xac6a5,  0x21d0013,  0x3030001,
0x12436e,    0x77cc9,  0x21d0013,  0x3030001,
0xac6a5,    0x77cc9,  0x21d0013,  0x3030001,
0x1240e4,   0x10307f,  0x18d0013,  0x3030000,
0x1240e4,    0x21065,  0x18d0013,  0x3030000,
0x10307f,    0x21065,  0x18d0013,  0x3030000,
0x11f15e,    0xd5f17,  0x17b0013,  0x3030000,
0x11f15e,    0x49247,  0x17b0013,  0x3030000,
0xd5f17,    0x49247,  0x17b0013,  0x3030001,
0x11c5fd,    0xce14e,  0x21d0013,  0x3030000,
0x11c5fd,    0x4e4af,  0x21d0013,  0x3030000,
0xce14e,    0x4e4af,  0x21d0013,  0x3030000,
0x11c005,    0xf655d,   0xc70025,  0x3030001,
0x11c005,    0x25aa8,   0xc70025,  0x3030000,
0xf655d,    0x25aa8,   0xc70025,  0x3030000,
0x119bab,   0x116bb6,  0x2410013,  0x3030000,
0x119bab,     0x2ff5,  0x2410013,  0x3030000,
0x116bb6,     0x2ff5,  0x2410013,  0x3030000,
0x11630f,    0xb8541,  0x10f0025,  0x3030000,
0x11630f,    0x5ddce,  0x10f0025,  0x3030000,
0xb8541,    0x5ddce,  0x10f0025,  0x3030000,
0x10b965,    0x884aa,   0xb50025,  0x3030000,
0x10b965,    0x834bb,   0xb50025,  0x3030000,
0x884aa,    0x834bb,   0xb50025,  0x3030000,
0x1081db,    0xdc35d,  0x10f0025,  0x3030000,
0x1081db,    0x2be7e,  0x10f0025,  0x3030000,
0xdc35d,    0x2be7e,  0x10f0025,  0x3030000,
0x1072a9,    0xd4789,  0x20b0013,  0x3030000,
0x1072a9,    0x32b20,  0x20b0013,  0x3030000,
0xd4789,    0x32b20,  0x20b0013,  0x3030000,
0x106711,    0xd5db0,  0x20b0013,  0x3030000,
0x106711,    0x30961,  0x20b0013,  0x3030000,
0xd5db0,    0x30961,  0x20b0013,  0x3030000,
0xf96cc,    0x9463f,  0x1e70013,  0x3030000,
0xf96cc,    0x6508d,  0x1e70013,  0x3030000,
0x9463f,    0x6508d,  0x1e70013,  0x3030000,
0xf7f62,    0xa12a3,   0x7f0049,  0x3030000,
0xf7f62,    0x56cbf,   0x7f0049,  0x3030000,
0xa12a3,	0x56cbf,   0x7f0049,  0x3030000,
0xea427,    0xe5286,   0xb50025,  0x3030001,
0xea427,     0x51a1,   0xb50025,  0x3030001,
0xe5286,     0x51a1,   0xb50025,  0x3030001,
0xe3ec2,    0xce587,   0x7f0049,  0x3030000,
0xe3ec2,    0x1593b,   0x7f0049,  0x3030000,
0xce587,    0x1593b,   0x7f0049,  0x3030000,
0xe1ed7,    0x8facb,   0xa30025,  0x3030001,
0xe1ed7,    0x5240c,   0xa30025,  0x3030001,
0x8facb,    0x5240c,   0xa30025,  0x3030001,
0xe0185,    0xd1cdc,  0x1e70013,  0x3030000,
0xe0185,     0xe4a9,  0x1e70013,  0x3030000,
0xd1cdc,     0xe4a9,  0x1e70013,  0x3030000,
0xd96c9,    0x726ef,  0x1330013,  0x3030001,
0xd96c9,    0x66fda,  0x1330013,  0x3030001,
0x726ef,    0x66fda,  0x1330013,  0x3030001,
0xd7bfd,    0x2a301,   0xa30025,  0x3030001,
0xd23d3,    0x6f66d,  0x1b10013,  0x3030000,
0xd23d3,    0x62d66,  0x1b10013,  0x3030000,
0x6f66d,    0x62d66,  0x1b10013,  0x3030000,
0xc810c,    0x66f25,   0x6d0049,  0x3030000,
0xc810c,    0x611e7,   0x6d0049,  0x3030000,
0x66f25,    0x611e7,   0x6d0049,  0x3030000,
0xc77d5,    0x9d8fb,  0x1b10013,  0x3030000,
0xc77d5,    0x29eda,  0x1b10013,  0x3030000,
0x9d8fb,    0x29eda,  0x1b10013,  0x3030000,
0xb7b21,    0x6c5c3,  0x18d0013,  0x3030000,
0xb7b21,    0x4b55e,  0x18d0013,  0x3030000,
0x6c5c3,    0x4b55e,  0x18d0013,  0x3030000,
0xb3c0f,    0xa5ffc,   0x6d0049,  0x3030000,
0xb3c0f,     0xdc13,   0x6d0049,  0x3030000,
0xa5ffc,     0xdc13,   0x6d0049,  0x3030000,
0xb2c1b,    0x81919,  0x18d0013,  0x3030000,
0xb2c1b,    0x31302,  0x18d0013,  0x3030000,
0x81919,    0x31302,  0x18d0013,  0x3030000,
0xb0c76,    0x6b38f,   0xc70025,  0x3030000,
0xb0c76,    0x458e7,   0xc70025,  0x3030000,
0x6b38f,    0x458e7,   0xc70025,  0x3030000,
0xaea16,    0x7e895,  0x10f0013,  0x3030001,
0xaea16,    0x30181,  0x10f0013,  0x3030001,
0x7e895,    0x30181,  0x10f0013,  0x3030001,
0xa7027,    0x78137,  0x17b0013,  0x3030000,
0xa7027,    0x2eef0,  0x17b0013,  0x3030000,
0x78137,    0x2eef0,  0x17b0013,  0x3030000,
0xa3876,    0x93bf9,  0x10f0013,  0x3030001,
0xa3876,     0xfc7d,  0x10f0013,  0x3030001,
0x93bf9,     0xfc7d,  0x10f0013,  0x3030001,
0xa1d1d,    0x915ba,   0xc70025,  0x3030000,
0xa1d1d,    0x10763,   0xc70025,  0x3030000,
0x915ba,    0x10763,   0xc70025,  0x3030000,
0x9c440,    0x5d973,   0x7f0025,  0x3030001,
0x9c440,    0x3eacd,   0x7f0025,  0x3030001,
0x5d973,    0x3eacd,   0x7f0025,  0x3030001,
0x9bb3f,    0x8dae0,  0x17b0013,  0x3030000,
0x9bb3f,     0xe05f,  0x17b0013,  0x3030000,
0x8dae0,     0xe05f,  0x17b0013,  0x3030000,
0x9a78f,    0x4fc98,   0xb50025,  0x3030000,
0x9a78f,    0x4aaf7,   0xb50025,  0x3030000,
0x4fc98,    0x4aaf7,   0xb50025,  0x3030000,
0x920f8,    0x7b8e7,   0x7f0025,  0x3030001,
0x920f8,    0x16811,   0x7f0025,  0x3030001,
0x7b8e7,    0x16811,   0x7f0025,  0x3030001,
0x86a05,    0x84f60,   0xb50025,  0x3030000,
0x86a05,     0x1aa5,   0xb50025,  0x3030000,
0x84f60,     0x1aa5,   0xb50025,  0x3030000,
0x81c53,    0x55faa,   0xa30025,  0x3030000,
0x81c53,    0x2bca9,   0xa30025,  0x3030000,
0x55faa,    0x2bca9,   0xa30025,  0x3030000,
0x7cf42,    0x42e81,   0x6d0025,  0x3030001,
0x7cf42,    0x3a0c1,   0x6d0025,  0x3030001,
0x42e81,    0x3a0c1,   0x6d0025,  0x3030001,
0x7b336,    0x66ba1,   0xa30025,  0x3030000,
0x7b336,    0x14795,   0xa30025,  0x3030000,
0x66ba1,    0x14795,   0xa30025,  0x3030000,
0x7b2b8,    0x52d2f,  0x1330013,  0x3030000,
0x7b2b8,    0x28589,  0x1330013,  0x3030000,
0x52d2f,    0x28589,  0x1330013,  0x3030000,
0x6f779,    0x4a5ae,   0xc70013,  0x3030001,
0x6f779,    0x251cb,   0xc70013,  0x3030001,
0x4a5ae,    0x251cb,   0xc70013,  0x3030001,
0x6e9e8,    0x6ace1,  0x1330013,  0x3030000,
0x6e9e8,     0x3d07,  0x1330013,  0x3030000,
0x6ace1,     0x3d07,  0x1330013,  0x3030000,
0x6cfd3,    0x6b9ae,   0x6d0025,  0x3030001,
0x6cfd3,     0x1625,   0x6d0025,  0x3030001,
0x6b9ae,     0x1625,   0x6d0025,  0x3030001,
0x67c25,    0x3bc51,  0x10f0013,  0x3030000,
0x67c25,    0x2bfd4,  0x10f0013,  0x3030000,
0x3bc51,    0x2bfd4,  0x10f0013,  0x3030000,
0x64639,    0x4a3dd,  0x10f0013,  0x3030000,
0x64639,    0x1a25c,  0x10f0013,  0x3030000,
0x4a3dd,    0x1a25c,  0x10f0013,  0x3030000,
0x63ab1,    0x60e63,   0xc70013,  0x3030001,
0x63ab1,     0x2c4e,   0xc70013,  0x3030001,
0x60e63,     0x2c4e,   0xc70013,  0x3030001,
0x62195,    0x387a9,   0xb50013,  0x3030001,
0x62195,    0x299ec,   0xb50013,  0x3030001,
0x387a9,    0x299ec,   0xb50013,  0x3030001,
0x59df5,    0x38303,   0x7f0025,  0x3030000,
0x59df5,    0x21af2,   0x7f0025,  0x3030000,
0x38303,    0x21af2,   0x7f0025,  0x3030000,
0x58e5c,    0x5121d,   0xb50013,  0x3030001,
0x58e5c,     0x7c3f,   0xb50013,  0x3030001,
0x5121d,     0x7c3f,   0xb50013,  0x3030001,
0x53491,    0x48faf,   0x7f0025,  0x3030000,
0x53491,     0xa4e2,   0x7f0025,  0x3030000,
0x48faf,     0xa4e2,   0x7f0025,  0x3030000,
0x51763,    0x3b05d,   0xa30013,  0x3030001,
0x51763,    0x16706,   0xa30013,  0x3030001,
0x3b05d,    0x16706,   0xa30013,  0x3030001,
0x4c47b,    0x44ec6,   0xa30013,  0x3030001,
0x4c47b,     0x75b5,   0xa30013,  0x3030001,
0x44ec6,     0x75b5,   0xa30013,  0x3030001,
0x4832b,    0x24ca8,   0x6d0025,  0x3030000,
0x4832b,    0x23683,   0x6d0025,  0x3030000,
0x24ca8,    0x23683,   0x6d0025,  0x3030000,
0x4483f,    0x23e9a,   0x490025,  0x3030001,
0x4483f,    0x209a5,   0x490025,  0x3030001,
0x23e9a,    0x209a5,   0x490025,  0x3030001,
0x4185c,    0x22255,   0xc70013,  0x3030000,
0x4185c,    0x1f607,   0xc70013,  0x3030000,
0x22255,    0x1f607,   0xc70013,  0x3030000,
0x3ff41,    0x3d001,   0x6d0025,  0x3030000,
0x3ff41,     0x2f40,   0x6d0025,  0x3030000,
0x3d001,     0x2f40,   0x6d0025,  0x3030000,
0x3df0d,    0x3186c,   0xc70013,  0x3030000,
0x3df0d,     0xc6a1,   0xc70013,  0x3030000,
0x3186c,     0xc6a1,   0xc70013,  0x3030000,
0x3d3cd,    0x39487,   0x490025,  0x3030001,
0x3d3cd,     0x3f46,   0x490025,  0x3030001,
0x39487,     0x3f46,   0x490025,  0x3030001,
0x20389,    0x1874a,   0xb50013,  0x3030000,
0x3895a,    0x26d37,   0x7f0013,  0x3030001,
0x3895a,    0x11c23,   0x7f0013,  0x3030001,
0x26d37,    0x11c23,   0x7f0013,  0x3030001,
0x3386a,    0x2e92b,   0xb50013,  0x3030000,
0x3386a,     0x4f3f,   0xb50013,  0x3030000,
0x2e92b,     0x4f3f,   0xb50013,  0x3030000,
0x3363a,    0x30c0b,   0x7f0013,  0x3030001,
0x3363a,     0x2a2f,   0x7f0013,  0x3030001,
0x30c0b,     0x2a2f,   0x7f0013,  0x3030001,
0x3066b,    0x1be10,   0xa30013,  0x3030000,
0x3066b,    0x1485b,   0xa30013,  0x3030000,
0x1be10,    0x1485b,   0xa30013,  0x3030000,
0x2ed40,    0x22a23,   0xa30013,  0x3030000,
0x2ed40,     0xc31d,   0xa30013,  0x3030000,
0x22a23,     0xc31d,   0xa30013,  0x3030000,
0x2df1c,    0x193f1,   0x6d0013,  0x3030001,
0x2df1c,    0x14b2b,   0x6d0013,  0x3030001,
0x193f1,    0x14b2b,   0x6d0013,  0x3030001,
0x2a1f3,    0x251cc,   0x6d0013,  0x3030001,
0x2a1f3,     0x5027,   0x6d0013,  0x3030001,
0x251cc,     0x5027,   0x6d0013,  0x3030001,
0x2781c,    0x15bb1,   0x490025,  0x3030000,
0x2781c,    0x11c6b,   0x490025,  0x3030000,
0x15bb1,    0x11c6b,   0x490025,  0x3030000,
0x22cf3,    0x21b4c,   0x490025,  0x3030000,
0x22cf3,     0x11a7,   0x490025,  0x3030000,
0x21b4c,     0x11a7,   0x490025,  0x3030000,
0x21617,    0x12023,   0x7f0013,  0x3030000,
0x21617,     0xf5f4,   0x7f0013,  0x3030000,
0x12023,     0xf5f4,   0x7f0013,  0x3030000,
0x1fcdb,    0x18c7f,   0x7f0013,  0x3030000,
0x1fcdb,     0x705c,   0x7f0013,  0x3030000,
0x18c7f,     0x705c,   0x7f0013,  0x3030000,
0x1a695,     0xfb5e,   0x6d0013,  0x3030000,
0x1a695,     0xab37,   0x6d0013,  0x3030000,
0xfb5e,     0xab37,   0x6d0013,  0x3030000,
0x1905d,     0xf410,   0x490013,  0x3030001,
0x1905d,     0x9c4d,   0x490013,  0x3030001,
0xf410,     0x9c4d,   0x490013,  0x3030001,
0x17baf,    0x1636d,   0x6d0013,  0x3030000,
0x17baf,     0x1842,   0x6d0013,  0x3030000,
0x1636d,     0x1842,   0x6d0013,  0x3030000,
0x16555,    0x15515,   0x490013,  0x3030001,
0x16555,     0x1040,   0x490013,  0x3030001,
0x15515,     0x1040,   0x490013,  0x3030001,
0xe8ce,     0x7c87,   0x490013,  0x3030000,
0xe8ce,     0x6c47,   0x490013,  0x3030000,
0x7c87,     0x6c47,   0x490013,  0x3030000,
0xd6cf,     0xb98e,   0x490013,  0x3030000,
0xd6cf,     0x1d41,   0x490013,  0x3030000,
0xb98e,     0x1d41,   0x490013,  0x3030000,
0x90ec,     0x54cd,   0x250013,  0x3030001,
0x90ec,     0x3c1f,   0x250013,  0x3030001,
0x54cd,     0x3c1f,   0x250013,  0x3030001,
0x82c7,     0x78dc,   0x250013,  0x3030001,
0x82c7,      0x9eb,   0x250013,  0x3030001,
0x78dc,      0x9eb,   0x250013,  0x3030001,
0x53e1,     0x2ee6,   0x250013,  0x3030000,
0x53e1,     0x24fb,   0x250013,  0x3030000,
0x2ee6,     0x24fb,   0x250013,  0x3030000,
0x4c93,     0x4459,   0x250013,  0x3030000,
0x4c93,      0x83a,   0x250013,  0x3030000,
0x4459,	  0x83a,   0x250013,  0x3030000};

int tsize=551; // prime look-up table size
int h,i,j,k,m;
int a,b,c,d;
int save[100];
FILE *Outfp;
Outfp = fopen("out18d.dat","w");
/*******************/
/*  factor input   */
/*******************/
for (h=0; h<insize; h+=3) {
/******************/
/*  first pair	  */
/******************/
a=input[4*h];
b=input[4*h+1];
c=a+b;
d=a-b;
fprintf(Outfp," %#10x %d \n",input[4*h+2],
(unsigned char)(input[4*h+3]&0xff));
fprintf(Outfp," %#8x %#8x ",a,b);
m=0;
for (i=0; i<tsize; i++) {
j=table[i];
if (j*j>a)
break;
if ((a/j)*j!=a)
continue;
for (k=0; k<100; k++) {
save[m]=j;
m=m+1;
a=a/j;
if ((a/j)*j!=a)
break;
}
}
if (a!=1) {
save[m]=a;
m=m+1;
}
if (m==1)
fprintf(Outfp,"%d",save[0]);
else {
for (i=0; i<m-1; i++) {
fprintf(Outfp,"%d*",save[i]);
}
fprintf(Outfp,"%d",save[m-1]);
}
fprintf(Outfp,"  ");
if (b==1)
fprintf(Outfp,"%d",b);
else {
m=0;
for (i=0; i<tsize; i++) {
j=table[i];
if (j*j>b)
break;
if ((b/j)*j!=b)
continue;
for (k=0; k<100; k++) {
save[m]=j;
m=m+1;
b=b/j;
if ((b/j)*j!=b)
break;
}
}
if (b!=1) {
save[m]=b;
m=m+1;
}
if (m==1)
fprintf(Outfp,"%d",save[0]);
else {
for (i=0; i<m-1; i++) {
fprintf(Outfp,"%d*",save[i]);
}
fprintf(Outfp,"%d",save[m-1]);
}
}
fprintf(Outfp,"  ");
m=0;
for (i=0; i<tsize; i++) {
j=table[i];
if (j*j>c)
break;
if ((c/j)*j!=c)
continue;
for (k=0; k<100; k++) {
save[m]=j;
m=m+1;
c=c/j;
if ((c/j)*j!=c)
break;
}
}
if (c!=1) {
save[m]=c;
m=m+1;
}
if (m==1)
fprintf(Outfp,"%d",save[0]);
else {
for (i=0; i<m-1; i++) {
fprintf(Outfp,"%d*",save[i]);
}
fprintf(Outfp,"%d",save[m-1]);
}
fprintf(Outfp,"  ");
if (d==1)
fprintf(Outfp,"%d",d);
else {
m=0;
for (i=0; i<tsize; i++) {
j=table[i];
if (j*j>d)
break;
if ((d/j)*j!=d)
continue;
for (k=0; k<100; k++) {
save[m]=j;
m=m+1;
d=d/j;
if ((d/j)*j!=d)
break;
}
}
if (d!=1) {
save[m]=d;
m=m+1;
}
if (m==1)
fprintf(Outfp,"%d",save[0]);
else {
for (i=0; i<m-1; i++) {
fprintf(Outfp,"%d*",save[i]);
}
fprintf(Outfp,"%d",save[m-1]);
}
}
fprintf(Outfp,"\n");
/******************/
/*  second pair   */
/******************/
a=input[4*h];
b=a-input[4*h+1];
if (a<b) {
c=a;
a=b;
b=c;
}
c=a+b;
d=a-b;
fprintf(Outfp," %#8x %#8x  ",a,b);
m=0;
for (i=0; i<tsize; i++) {
j=table[i];
if (j*j>a)
break;
if ((a/j)*j!=a)
continue;
for (k=0; k<100; k++) {
save[m]=j;
m=m+1;
a=a/j;
if ((a/j)*j!=a)
break;
}
}
if (a!=1) {
save[m]=a;
m=m+1;
}
if (m==1)
fprintf(Outfp,"%d",save[0]);
else {
for (i=0; i<m-1; i++) {
fprintf(Outfp,"%d*",save[i]);
}
fprintf(Outfp,"%d",save[m-1]);
}
fprintf(Outfp,"  ");
if (b==1)
fprintf(Outfp,"%d",b);
else {
m=0;
for (i=0; i<tsize; i++) {
j=table[i];
if (j*j>b)
break;
if ((b/j)*j!=b)
continue;
for (k=0; k<100; k++) {
save[m]=j;
m=m+1;
b=b/j;
if ((b/j)*j!=b)
break;
}
}
if (b!=1) {
save[m]=b;
m=m+1;
}
if (m==1)
fprintf(Outfp,"%d",save[0]);
else {
for (i=0; i<m-1; i++) {
fprintf(Outfp,"%d*",save[i]);
}
fprintf(Outfp,"%d",save[m-1]);
}
}
fprintf(Outfp,"  ");
m=0;
for (i=0; i<tsize; i++) {
j=table[i];
if (j*j>c)
break;
if ((c/j)*j!=c)
continue;
for (k=0; k<100; k++) {
save[m]=j;
m=m+1;
c=c/j;
if ((c/j)*j!=c)
break;
}
}
if (c!=1) {
save[m]=c;
m=m+1;
}
if (m==1)
fprintf(Outfp,"%d",save[0]);
else {
for (i=0; i<m-1; i++) {
fprintf(Outfp,"%d*",save[i]);
}
fprintf(Outfp,"%d",save[m-1]);
}
fprintf(Outfp,"  ");
if (d==1)
fprintf(Outfp,"%d",d);
else {
m=0;
for (i=0; i<tsize; i++) {
j=table[i];
if (j*j>d)
break;
if ((d/j)*j!=d)
continue;
for (k=0; k<100; k++) {
save[m]=j;
m=m+1;
d=d/j;
if ((d/j)*j!=d)
break;
}
}
if (d!=1) {
save[m]=d;
m=m+1;
}
if (m==1)
fprintf(Outfp,"%d",save[0]);
else {
for (i=0; i<m-1; i++) {
fprintf(Outfp,"%d*",save[i]);
}
fprintf(Outfp,"%d",save[m-1]);
}
}
fprintf(Outfp,"\n");
/******************/
/*  third pair	  */
/******************/
b=input[4*h+1];
a=input[4*h]-b;
if (a<b) {
c=a;
a=b;
b=c;
}
c=a-b;	       // switch a-b and a+b
d=a+b;	       //
fprintf(Outfp," %#8x %#8x  ",a,b);
m=0;
for (i=0; i<tsize; i++) {
j=table[i];
if (j*j>a)
break;
if ((a/j)*j!=a)
continue;
for (k=0; k<100; k++) {
save[m]=j;
m=m+1;
a=a/j;
if ((a/j)*j!=a)
break;
}
}
if (a!=1) {
save[m]=a;
m=m+1;
}
if (m==1)
fprintf(Outfp,"%d",save[0]);
else {
for (i=0; i<m-1; i++) {
fprintf(Outfp,"%d*",save[i]);
}
fprintf(Outfp,"%d",save[m-1]);
}
fprintf(Outfp,"  ");
if (b==1)
fprintf(Outfp,"%d",b);
else {
m=0;
for (i=0; i<tsize; i++) {
j=table[i];
if (j*j>b)
break;
if ((b/j)*j!=b)
continue;
for (k=0; k<100; k++) {
save[m]=j;
m=m+1;
b=b/j;
if ((b/j)*j!=b)
break;
}
}
if (b!=1) {
save[m]=b;
m=m+1;
}
if (m==1)
fprintf(Outfp,"%d",save[0]);
else {
for (i=0; i<m-1; i++) {
fprintf(Outfp,"%d*",save[i]);
}
fprintf(Outfp,"%d",save[m-1]);
}
}
fprintf(Outfp,"  ");
m=0;
for (i=0; i<tsize; i++) {
j=table[i];
if (j*j>c)
break;
if ((c/j)*j!=c)
continue;
for (k=0; k<100; k++) {
save[m]=j;
m=m+1;
c=c/j;
if ((c/j)*j!=c)
break;
}
}
if (c!=1) {
save[m]=c;
m=m+1;
}
if (m==1)
fprintf(Outfp,"%d",save[0]);
else {
for (i=0; i<m-1; i++) {
fprintf(Outfp,"%d*",save[i]);
}
fprintf(Outfp,"%d",save[m-1]);
}
fprintf(Outfp,"  ");
if (d==1)
fprintf(Outfp,"%d",d);
else {
m=0;
for (i=0; i<tsize; i++) {
j=table[i];
if (j*j>d)
break;
if ((d/j)*j!=d)
continue;
for (k=0; k<100; k++) {
save[m]=j;
m=m+1;
d=d/j;
if ((d/j)*j!=d)
break;
}
}
if (d!=1) {
save[m]=d;
m=m+1;
}
if (m==1)
fprintf(Outfp,"%d",save[0]);
else {
for (i=0; i<m-1; i++) {
fprintf(Outfp,"%d*",save[i]);
}
fprintf(Outfp,"%d",save[m-1]);
}
}
fprintf(Outfp,"\n");
fprintf(Outfp,"\n");
}
fprintf(Outfp,"\n");
fclose(Outfp);
return(0);
}
```