Tcl 语言改写Java题目-1

Java题目:https://blog.csdn.net/wenzhi20102321/article/details/52274976

Program1.

proc fun_1 {x} {
    if {$x<3} {
        return 1
    } else {
        return [expr [fun_1 [expr $x - 1]] + [fun_1 [expr $x - 2]]]
    }
}
puts [fun_1 10]

program 2

#判断是不是素数的函数
#namespace import ::tcl::mathfunc::*
#循环结束都没有返回0才能判断是素数,则返回1;注意return 的返回值
proc fun_2 {x} {
    for {set i 2} {$i < sqrt($x)} {incr i} {
    if {$x % $i == 0} {
        return false
    }
    }
    return True
}
proc fun_3 {a b} {
    set sum 0
    for {set j [expr $a - 1 ]} {$j < $b} {incr j} {
    if {[fun_2 $j]} {
        set sum [expr $sum + 1]
        puts $j
        if { $sum % 5 == 0} {
        puts "\n"
           }
        
    }
    }
    return $sum
}
puts [fun_3 101 200]

Program 3

#判断一个数是否是水仙花数
proc func_1 {x} {
    set n 10
    set k 100
    #i=3
    set i [expr $x %$n]
    #j=5
    set j [expr [expr $x / $n] % $n]
    #z=1
    set z [expr $x / $k]
#    set y [expr [expr pow($i,3)]+ [expr pow($j,3)] +[expr pow($z,3)]]
    set y [expr pow($i,3)+ pow($j,3)+ pow($z,3)]
    if {$x == $y} {
        return True
    } else {
        return false
    }
}
#打印出所有的水仙花数:1)是一个三位数,2)是一个水仙花
for {set i 100} {$i < 1000}  {incr i} {
    if {[func_1 $i]} {
        puts $i
    }
}

Program 6

#最大公约数和最小公倍数
proc func_1 {a b} {
    if {[expr $b % $a] == 0} {
        puts $b
    } else {
        while {[expr $b % $a] != 0} {
        set z [expr $b % $a]
        set b $a
        set a $z
        }
        puts $a
        }
}
puts [func_1 27 36]

program 8

proc func_1 {} {
set a 3
set n 3
set q 10
#计算第n个数的大小
set x [expr $a * [expr [expr 1 - pow(10,$n)] / [expr 1 - $q]]]
#计算S=a+aa+aaa+aaaa+aaaaa的和
set sum 0
for {set i 1} {$i <= $n} {incr i} {
    set x [expr $a * [expr [expr 1 - pow(10,$i)] / [expr 1 - $q]]]
    set sum [expr $sum + $x]
}
return $sum
}
puts [func_1]

猜你喜欢

转载自www.cnblogs.com/hyq-1/p/9068900.html
TCL
今日推荐