Write a program to factor this set of 10 numbers:
15683499351193564659087946928346254200387478295674004601169717908835380854917 24336606644769176324903078146386725856136578588745270315310278603961263491677 39755798612593330363515033768510977798534810965257249856505320177501370210341 45956007409701555500308213076326847244392474672803754232123628738514180025797 56750561765380426511927268981399041209973784855914649851851872005717216649851 64305356095578257847945249846113079683233332281480076038577811506478735772917 72232745851737657087578202276146803955517234009862217795158516719268257918161 80396068174823246821470041884501608488208032185938027007215075377038829809859 93898867938957957723894669598282066663807700699724611406694487559911505370789 99944277286356423266080003813695961952369626021807452112627990138859887645249
Each of these:
- Is a 77-digit number less than 2^256.
- Is a semiprime (e.g., the product of exactly 2 primes).
- Has something in common with at least one other number in the set.
Thus, this challenge is not about general factoring of 256-bit semiprimes, but about factoring these semiprimes. It is a puzzle. There is a trick. The trick is fun.
It is possible to factor each of these numbers with surprising efficiency. Therefore, the algorithm you choose will make a much bigger difference than the hardware you use.
- This is code-golf, so the shortest answer wins.
- You may use any method of factoring. (But don't precompute the answers and just print them. You program should do actual work.)
- You may use any programming language (or combination of languages), and any libraries they provide or you have installed. However, you probably won't need anything fancy.