/
tomasz_5731_evidence.sf
36 lines (30 loc) · 4.48 KB
/
tomasz_5731_evidence.sf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/usr/bin/ruby
var k = 5731
var t = ((5**5731 - 1)/4)
var f = [
12207031,
98072964868468250849,
1088503532840208536899,
(5**521 - 1)/4,
(5**5731 - 1)/4 / (5**521 - 1)/4 / 12207031,
(5**5731 - 1)/4 / (5**521 - 1)/4 / 98072964868468250849,
(5**5731 - 1)/4 / (5**521 - 1)/4 / 1088503532840208536899,
(5**5731 - 1)/4 / (5**521 - 1)/4 / (1088503532840208536899 * 98072964868468250849),
(5**5731 - 1)/4 / (5**521 - 1)/4 / (12207031 * 1088503532840208536899 * 98072964868468250849),
(5**5731 - 1)/4 / (5**521 - 1)/4 / (12207031 * 1088503532840208536899),
(5**5731 - 1)/4 / (5**521 - 1)/4 / (12207031 * 98072964868468250849),
35246219635343486690114409518855705873990482989031673798909259281201185292317809711569365989196201479525131774673599744484537546645966124929063319008264873187497239912510081721277400194935414070246811430323957951585658423331186671685394447188842232778989521196302706687220491344857326237601229627671951845967986801624692631983773530757732253382824184329690726325465621220528536662319159886333740056688446931068384199779757356389023616037891468990871853473838304831853876065973008574052144368665990889103474649516127483802102854852209293198289733141141123568284855727795919662524613027490525721368431891964794496698860743567591719401439032245857842497840779549621520987670827232023792375235648312978422707543820998007267595327001914244446158725164315613235356628925970007182109277960957787820211438744738976544327173063099701972638238882635868369085679928184597581943210511786584125018576975546107783452728755725713881802844880358262237876083064601041892859082972709526445107755218311943840979347161978535180537351525744852993408837243796865318941502344609237625052773366494466593309462587424038102857704334061959697440560079768670783393899419832719774608465510506671040459608266111479832232039245862681679580700617135287049893363303617006868480507192533092544550183918198011531815453554543577647585790964052618870031811395365290843818817690858676339563040952550054521249325763690599403433907422836804542011050782593950141918855262986336195482556332947108897414115934264004517897094819167917658139784564934619986871389536453923102090313855621582924677137730691362053973713423441400423845450308164879925452255579678989108448575275935911406584674954348431849773218736558296349546915839258986202620465582366663624018384208556071248289427295902463551319796736292377792102673384766104191945134183316667731607891661769613827601854296991859126781936591530261678055803455417775360850412035704774052826274945769954877811030599717904811495781099880365319989622183068140526361177890747036707032444981853925925031159443856723520081342565699938764047739670511499258657427572956979158874440095118319904393286851957966225978305831018735674686256873825501930464468342819571701627999560781386428534493427053597776971163642628313617091813909729200942714462394816302123695288960502838556235362852513431722979931596448747992540823237378901802905708156710181984041015072145036035301460949695538389379790680016297268854045782600022155554075380737475820090455908890891060849744937393564514872641660809748622742890926452075083851921621654427061951129840748449914627328729380351936956063185313130267756787165044762500690801913355262606520863774872838712528952326789418842954882003490868628841962222679861115014438696115724621135827029611036744986742912428336357862404242548713042146629487121740866659970123418668253105996765904583466138691550476566762575782995662953664540711864010856381480468896532981239362107276014476727724519000312258517549877999832860340798601940804410397229651480882665159516929488406145262819166892555912180132249373380842639622036103779367601785575270597386397027561880993852259350245381618273129567959261508574998341798521506078736418273283571013118292631373525806662415984954832327346868741759270167288648784819977419303806865100997197561662284993490142868737926570373878050128573126188838601258883784781641489314350766474418739206598722327838738285251435216510190922027673163939460121340824630607255487958954262939439350116147764324053321026611786117937253224133460617616530756231358512913543603853817760496739043227449290825854444305986205286013847130683578138564905431357034033663650084860530509178721558782388456156253814501953121,
]
say f.all {|d| d % k == 1 }
say f.all {|d| (t/d) % k == 1 }
for r in (1..f.len) {
f.combinations(r, {|*a|
var prod = a.prod
if (t%prod == 0) {
say "Testing #{prod}"
assert(prod % k, 1)
assert((t/prod) % k, 1)
}
assert(prod % k, 1)
})
}