TI-Basic: Programme und Tutorials: Querprodukt
Erstellt von: | Peter Riedel |
Schwierigkeitsgrad: | fortgeschritten |
Modell: | Voyage 200 |
Querprodukt
BearbeitenLinksassoziativ
BearbeitenZiffern der natürlichen Zahl werden von links nach rechts ziffernweise multipliziert, sodass man das Querprodukt von erhält.
Funktion
Bearbeiten:qp(n) :Func : Return Π((mod(n,10^(num(n,1)-i))-mod(n,10^(num(n,1)-i-1)))/10^(num(n,1)-i-1),i,0,num(n,1)-1) :EndFunc
Programm
Bearbeiten:qp(n) :Prgm :EndPrgm
Rechtsassoziativ
BearbeitenZiffern der natürlichen Zahl werden von rechts nach links ziffernweise multipliziert, sodass man das Querprodukt von erhält.
Funktion
Bearbeiten:digitpro(n) :Func :If n<0 or mod(n,1)≠0 Then : return undef :Return Π((mod(n,10^(i+1))-mod(n,10^i))/10^i,i,0,numdigit(n,1)-1) :EndFunc
:numdigit(n,i) :Func :While 10^i≤n : i+1→i :EndWhile :Return i :EndFunc
Programm
Bearbeiten:digitpro(n) :Prgm :ClrIO :If n<0 or mod(n,1)≠0 Then : Disp "Error: n ∈ N = {0,1,2,...,∞}" : Return :EndIf :1→i :While 10^i≤n : i+1→i :EndWhile :string(n)→n :1→q :While i>0 : expr(mid(n,i,1))→j : q*j→q : i-1→i :EndWhile :string(q)→q :Disp "digit product: "&q :EndPrgm
Iteratives Querprodukt
BearbeitenRekursion
BearbeitenFunktion
Bearbeiten:muldigrt(n,k) :Func :If n<10 Then : Return n :ElseIf Π((mod(n,10^(i+1))-mod(n,10^i))/10^i,i,0,k-1)<10 Then : Return Π((mod(n,10^(i+1))-mod(n,10^i))/10^i,i,0,k-1) :ElseIf Π((mod(n,10^(i+1))-mod(n,10^i))/10^i,i,0,k-1)≥10 Then : If (mod(Π((mod(n,10^(i+1))-mod(n,10^i))/10^i,i,0,k-1),10^k)-mod(Π((mod(n,10^(i+1))-mod(n,10^i))/10^i,i,0,k-1),10^(k-1)))/10^(k-1)≠0 Then : Return muldigrt(Π((mod(n,10^(i+1))-mod(n,10^i))/10^i,i,0,k-1),k) : Else : Return muldigrt(Π((mod(n,10^(i+1))-mod(n,10^i))/10^i,i,0,k-1),k-1) : EndIf :EndIf :EndFunc
Programm
Bearbeiten:muldigrt(n) :Prgm :ClrIO :If n<0 or mod(n,1)≠0 Then : Disp "Error: n ∈ N = {0,1,2,...,∞}" : Return :EndIf :0→k :While n>9 : 1→i : While 10^i≤n : i+1→i : EndWhile : string(n)→n : 1→q : While i>0 : expr(mid(n,i,1))→j : q*j→q : i-1→i : EndWhile : k+1→k : q→n :EndWhile :string(n)→n :string(k)→k :Disp "multiplicative digital root: "&n,"multiplicative persistence: "&k :EndPrgm