Πέμπτη 12 Μαρτίου 2026

Integer Square Root (Addition: BigInteger)

Update: https://rosettacode.org/wiki/Isqrt_(integer_square_root)_of_X#M2000_Interpreter


Check function IntSqrt using BigInteger at the the last part of module integer_square_root

module integer_square_root (f=-2) {
Locale 1033
function comma$(a) {
string z, f, p
const c$=locale$(15)
if type$(a)="BigInteger" then z=str$(a) else z=a
long m=len(z)
z=strrev$(z)
for i=1 to len(z) step 3
p=mid$(z,i, 3)
f+=p+if$(m-i>=3->c$,"")
next
=strrev$(f)
}
function IntSqrt(x as long long) {
long long q=1, z=x, t, r
do q*=4&& : until (q>x)
while q>1&&
q|div 4&&:t=z-r-q:r|div 2&&
if t>-1&& then z=t:r+= q
end while
=r
}
long i
print #f, "The integer square root of integers from 0 to 65 are:"
for i=0 to 65
print #f, IntSqrt(i)+" ";
next
print #f
print #f, "Using Long Long Type"
print #f, "The integer square roots of powers of 7 from 7^1 up to 7^21 are:"
for i=1 to 21 step 2 {
print #f, "IntSqrt(7^"+i+")="+comma$(IntSqrt(7&&^i))+" of 7^"+i+" ("+comma$(7&&^I)+")"
}
print #f
function IntSqrt(x as decimal) {
decimal q=1, z=x, t, r
do q*=4 : until (q>x)
while q>1
q/=4:t=z-r-q:r/=2
if t>-1 then z=t:r+= q
end while
=r
}
print #f, "Using Decimal Type"
print #f, "The integer square roots of powers of 7 from 7^23 up to 7^33 are:"
decimal j,p
for i=23 to 33 step 2 {
p=1:for j=1 to i:p*=7@:next
print #f, "IntSqrt(7^"+i+")="+comma$(IntSqrt(p))+" of 7^"+i+" ("+comma$(p)+")"
}
print #f


function IntSqrt(x as double) {
double q=1, z=x, t, r
do q*=4 : until (q>x)
while q>1
q/=4:t=z-r-q:r/=2
if t>-1 then z=t:r+= q
end while
=r
}
print #f, "Using Double Type"
print #f, "The integer square roots of powers of 7 from 7^19 up to 7^35 are:"
for i=19 to 35 step 2 {
print #f, "IntSqrt(7^"+i+")="+comma$(IntSqrt(7^i))+" of 7^"+i+" ("+(7^i)+")"
}
print #f
print #f, "Using BigInteger Type"

function IntSqrt(x as BigInteger) {
BigInteger q=1, z=x, t, r
do q*=4 : until (q>x)
while q>1
q|div 4:t=z-r-q:r|div 2
if t>-1 then z=t:r+= q
end while
=r
}
BigInteger Z=7
z=modpow(7u, 19u, BigInteger("1"+String$("0", 100)))
print #f, "The integer square roots of powers of 7 from 7^19 up to 7^35 are:"
for i=19 to 73 step 2 {
print #f, "IntSqrt(7^"+i+")="+comma$(IntSqrt(Z))+" of 7^"+i+" ("+comma$(Z)+")"
Z*=7*7
}
print #f

}
open "" for output as #f // f = -2 now, direct output to screen
integer_square_root
close #f
open "out.txt" for output as #f
integer_square_root f
close #f
win "notepad", dir$+"out.txt"


Output:

The integer square root of integers from 0 to 65 are:

0 1 1 1 2 2 2 2 2 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 8 8 

Using Long Long Type

The integer square roots of powers of 7 from 7^1 up to 7^21 are:

IntSqrt(7^1)=2 of 7^1 (7)

IntSqrt(7^3)=18 of 7^3 (343)

IntSqrt(7^5)=129 of 7^5 (16,807)

IntSqrt(7^7)=907 of 7^7 (823,543)

IntSqrt(7^9)=6,352 of 7^9 (40,353,607)

IntSqrt(7^11)=44,467 of 7^11 (1,977,326,743)

IntSqrt(7^13)=311,269 of 7^13 (96,889,010,407)

IntSqrt(7^15)=2,178,889 of 7^15 (4,747,561,509,943)

IntSqrt(7^17)=15,252,229 of 7^17 (232,630,513,987,207)

IntSqrt(7^19)=106,765,608 of 7^19 (11,398,895,185,373,143)

IntSqrt(7^21)=747,359,260 of 7^21 (558,545,864,083,284,007)


Using Decimal Type

The integer square roots of powers of 7 from 7^23 up to 7^33 are:

IntSqrt(7^23)=5,231,514,822 of 7^23 (27,368,747,340,080,916,343)

IntSqrt(7^25)=36,620,603,758 of 7^25 (1,341,068,619,663,964,900,807)

IntSqrt(7^27)=256,344,226,312 of 7^27 (65,712,362,363,534,280,139,543)

IntSqrt(7^29)=1,794,409,584,184 of 7^29 (3,219,905,755,813,179,726,837,607)

IntSqrt(7^31)=12,560,867,089,291 of 7^31 (157,775,382,034,845,806,615,042,743)

IntSqrt(7^33)=87,926,069,625,040 of 7^33 (7,730,993,719,707,444,524,137,094,407)


Using Double Type

The integer square roots of powers of 7 from 7^19 up to 7^35 are:

IntSqrt(7^19)=106,765,608 of 7^19 (1.13988951853731E+16)

IntSqrt(7^21)=747,359,260 of 7^21 (5.58545864083284E+17)

IntSqrt(7^23)=5,231,514,822 of 7^23 (2.73687473400809E+19)

IntSqrt(7^25)=36,620,603,758 of 7^25 (1.34106861966396E+21)

IntSqrt(7^27)=256,344,226,312 of 7^27 (6.57123623635343E+22)

IntSqrt(7^29)=1,794,409,584,184 of 7^29 (3.21990575581318E+24)

IntSqrt(7^31)=12,560,867,089,291 of 7^31 (1.57775382034846E+26)

IntSqrt(7^33)=87,926,069,625,040 of 7^33 (7.73099371970744E+27)

IntSqrt(7^35)=615,482,487,375,282 of 7^35 (3.78818692265665E+29)


Using BigInteger Type

The integer square roots of powers of 7 from 7^19 up to 7^35 are:

IntSqrt(7^19)=106,765,608 of 7^19 (11,398,895,185,373,143)

IntSqrt(7^21)=747,359,260 of 7^21 (558,545,864,083,284,007)

IntSqrt(7^23)=5,231,514,822 of 7^23 (27,368,747,340,080,916,343)

IntSqrt(7^25)=36,620,603,758 of 7^25 (1,341,068,619,663,964,900,807)

IntSqrt(7^27)=256,344,226,312 of 7^27 (65,712,362,363,534,280,139,543)

IntSqrt(7^29)=1,794,409,584,184 of 7^29 (3,219,905,755,813,179,726,837,607)

IntSqrt(7^31)=12,560,867,089,291 of 7^31 (157,775,382,034,845,806,615,042,743)

IntSqrt(7^33)=87,926,069,625,040 of 7^33 (7,730,993,719,707,444,524,137,094,407)

IntSqrt(7^35)=615,482,487,375,282 of 7^35 (378,818,692,265,664,781,682,717,625,943)

IntSqrt(7^37)=4,308,377,411,626,977 of 7^37 (18,562,115,921,017,574,302,453,163,671,207)

IntSqrt(7^39)=30,158,641,881,388,842 of 7^39 (909,543,680,129,861,140,820,205,019,889,143)

IntSqrt(7^41)=211,110,493,169,721,897 of 7^41 (44,567,640,326,363,195,900,190,045,974,568,007)

IntSqrt(7^43)=1,477,773,452,188,053,281 of 7^43 (2,183,814,375,991,796,599,109,312,252,753,832,343)

IntSqrt(7^45)=10,344,414,165,316,372,973 of 7^45 (107,006,904,423,598,033,356,356,300,384,937,784,807)

IntSqrt(7^47)=72,410,899,157,214,610,812 of 7^47 (5,243,338,316,756,303,634,461,458,718,861,951,455,543)

IntSqrt(7^49)=506,876,294,100,502,275,687 of 7^49 (256,923,577,521,058,878,088,611,477,224,235,621,321,607)

IntSqrt(7^51)=3,548,134,058,703,515,929,815 of 7^51 (12,589,255,298,531,885,026,341,962,383,987,545,444,758,743)

IntSqrt(7^53)=24,836,938,410,924,611,508,707 of 7^53 (616,873,509,628,062,366,290,756,156,815,389,726,793,178,407)

IntSqrt(7^55)=173,858,568,876,472,280,560,953 of 7^55 (30,226,801,971,775,055,948,247,051,683,954,096,612,865,741,943)

IntSqrt(7^57)=1,217,009,982,135,305,963,926,677 of 7^57 (1,481,113,296,616,977,741,464,105,532,513,750,734,030,421,355,207)

IntSqrt(7^59)=8,519,069,874,947,141,747,486,745 of 7^59 (72,574,551,534,231,909,331,741,171,093,173,785,967,490,646,405,143)

IntSqrt(7^61)=59,633,489,124,629,992,232,407,216 of 7^61 (3,556,153,025,177,363,557,255,317,383,565,515,512,407,041,673,852,007)

IntSqrt(7^63)=417,434,423,872,409,945,626,850,517 of 7^63 (174,251,498,233,690,814,305,510,551,794,710,260,107,945,042,018,748,343)

IntSqrt(7^65)=2,922,040,967,106,869,619,387,953,625 of 7^65 (8,538,323,413,450,849,900,970,017,037,940,802,745,289,307,058,918,668,807)

IntSqrt(7^67)=20,454,286,769,748,087,335,715,675,381 of 7^67 (418,377,847,259,091,645,147,530,834,859,099,334,519,176,045,887,014,771,543)

IntSqrt(7^69)=143,180,007,388,236,611,350,009,727,669 of 7^69 (20,500,514,515,695,490,612,229,010,908,095,867,391,439,626,248,463,723,805,607)

IntSqrt(7^71)=1,002,260,051,717,656,279,450,068,093,686 of 7^71 (1,004,525,211,269,079,039,999,221,534,496,697,502,180,541,686,174,722,466,474,743)

IntSqrt(7^73)=7,015,820,362,023,593,956,150,476,655,802 of 7^73 (49,221,735,352,184,872,959,961,855,190,338,177,606,846,542,622,561,400,857,262,407)


Δεν υπάρχουν σχόλια:

Δημοσίευση σχολίου

You can feel free to write any suggestion, or idea on the subject.