79 lines
1.5 KiB
Text
79 lines
1.5 KiB
Text
global pasTriMax
|
|
pasTriMax = 61
|
|
dim pasTri(pasTriMax + 1)
|
|
|
|
for n = 0 to 9
|
|
call expandPoly n
|
|
next n
|
|
for n = 2 to pasTriMax
|
|
if isPrime(n) <> 0 then
|
|
print using("###", n);
|
|
end if
|
|
next n
|
|
print
|
|
end
|
|
|
|
sub expandPoly n
|
|
n = int(n)
|
|
dim vz$(1)
|
|
vz$(0) = "+"
|
|
vz$(1) = "-"
|
|
if n > pasTriMax then
|
|
print n; " is out of range"
|
|
end
|
|
end if
|
|
select case n
|
|
case 0
|
|
print "(x-1)^0 = 1"
|
|
case 1
|
|
print "(x-1)^1 = x-1"
|
|
case else
|
|
call pascalTriangle n
|
|
print "(x-1)^"; n; " = ";
|
|
print "x^"; n;
|
|
bVz = 1
|
|
nDiv2 = int(n / 2)
|
|
for j = n - 1 to nDiv2 + 1 step -1
|
|
print vz$(bVz); pasTri(n - j); "*x^"; j;
|
|
bVz = abs(1 - bVz)
|
|
next j
|
|
for j = nDiv2 to 2 step -1
|
|
print vz$(bVz); pasTri(j); "*x^"; j;
|
|
bVz = abs(1 - bVz)
|
|
next j
|
|
print vz$(bVz); pasTri(1); "*x";
|
|
bVz = abs(1 - bVz)
|
|
print vz$(bVz); pasTri(0)
|
|
end select
|
|
end sub
|
|
|
|
function isPrime(n)
|
|
n = int(n)
|
|
if n > pasTriMax then
|
|
print n; " is out of range"
|
|
end
|
|
end if
|
|
call pascalTriangle n
|
|
res = 1
|
|
i = int(n / 2)
|
|
while res and (i > 1)
|
|
res = res and (pasTri(i) mod n = 0)
|
|
i = i - 1
|
|
wend
|
|
isPrime = res
|
|
end function
|
|
|
|
sub pascalTriangle n
|
|
rem Calculate the n'th line 0.. middle
|
|
n = int(n)
|
|
pasTri(0) = 1
|
|
j = 1
|
|
while j <= n
|
|
j = j + 1
|
|
k = int(j / 2)
|
|
pasTri(k) = pasTri(k - 1)
|
|
for k = k to 1 step -1
|
|
pasTri(k) = pasTri(k) + pasTri(k - 1)
|
|
next k
|
|
wend
|
|
end sub
|