ここでは gcm という関数名をつけておく。
def gcm(n:BigInt,m:BigInt):BigInt= {
print(s"gcm($n,$m)") ;
val x=n%m ;
if( x ==0 ) m
else gcm(m, x) ;
}
def lcm(n:BigInt, m:BigInt)=
n*m/gcm(n,m)
gcmは、こうも書ける
def gcm(n:BigInt,m:BigInt):BigInt=
if( m==0 ) n else gcm(m, n%m)
def gcm(n:BigInt,m:BigInt):BigInt= {
var nn=n ; var mm=m
while(mm!=0) {
print(s"gcm_($nn,$mm)")
val x=nn%mm
nn=mm ; mm=x
}
nn
}
def Q (len:Double) {
if(len>5) {
for(i <- 1 to 30) {
forward(len) ; left(12)
if(i%10==0) Q(len/2)
}
}
}
clear
setPenThickness(10)
for(i<-1 to 30) {
if(i%10==0)
setPenColor(color(random(256),random(256),random(256)))
forward(10)
left(12)
}
def y(len:Double) {
if(len>20) {
setPenThickness(len/3)
forward(len)
right(30) ; y(len*0.8)
left(60) ; y(len*0.8)
right(30)
back(len)
}
}
clear
y(100)
Welcome to Scala version 2.11.4 Server VM, Java 1.8.0_111).
Type in expressions to have theType :help for more information
scala> def hel(x:Any):String = hel: (x: Any)String
scala> hel(1)
res0: String = hello
scala> 960 % 81
res1: Int = 69
scala> 81 % 69
res2: Int = 12
scala> 69 % 12
res3: Int = 9
scala> 12 % 9
res4: Int = 3
scala> 9%3
res5: Int = 0
scala> def gcm(n:Long,m:Long):L
| if( n%m ==0 ) m
| else gcm(m, n%m)
| }
gcm: (n: Long, m: Long)Long
scala> gcm(12,20)
res6: Long = 4
scala> gcm(960,81)
res7: Long = 3
scala> val x=30
x: Int = 30
scala> "x="+x
res8: String = x=30
scala> x+x+x
res9: Int = 90
scala> ""+x+x+x
res10: String = 303030
scala> ""+x
res11: String = 30
scala> def gcm(n:Long,m:Long):L
| print("gcm("+n+","+m+")"
| val x=n%m ;
| if( x ==0 ) m
| else gcm(m, x) ;
| }
gcm: (n: Long, m: Long)Long
scala> gcm(20,12)
gcm(20,12)gcm(12,8)gcm(8,4)res14
scala> gcm(81,60)
gcm(81,60)gcm(60,21)gcm(21,18)gs13: Long = 3
scala> gcm(81,960)
gcm(81,960)gcm(960,81)gcm(81,69)gcm(12,9)gcm(9,3)res14: Long =
scala> 1+""
res15: String = 1
scala> ""+1
res16: String = 1
scala> 1+2
res17: Int = 3
scala> gcm(83472,9260)
gcm(83472,9260)gcm(9260,132)gcmm(20,12)gcm(12,8)gcm(8,4)res18:
scala> def gcm(n:BigInt,m:BigIn {
| print("gcm("+n+","+m+")"
| val x=n%m ;
| if( x ==0 ) m
| else gcm(m, x) ;
| }
gcm: (n: BigInt, m: BigInt)BigI
scala>
scala> gcm(1289127941,22194128)gcm(1289127941,22194128)gcm(221517)gcm(1868517,1640441)gcm(1646)gcm(228076,43909)gcm(43909,851,1254)gcm(1254,1007)gcm(1007,2,19)res19: BigInt = 19
scala> gcm(1289127985238541,2234128)
<console>:1: error: integer numrge
gcm(1289127985238541,2234128)
scala> gcm(128912741,22326341) gcm(128912741,22326341)gcm(2232036)gcm(17281036,5045305)gcm(50121)gcm(2145121,755063)gcm(7550gcm(634995,120068)gcm(120068,34655,16103)gcm(16103,2449)gcm(24m(1409,1040)gcm(1040,369)gcm(36302,67)gcm(67,34)gcm(34,33)gcm(: BigInt = 1
scala> 6%2
res21: Int = 0
scala> 6/2
res22: Int = 3
scala> 7/2
res23: Int = 3
scala> 7%2
res24: Int = 1