酷!學園

技術討論區 => Linux 討論版 => 主題作者是: t1213121okok 於 2017-11-02 10:23

主題: 迴圈問題...
作者: t1213121okok2017-11-02 10:23
最近工作需要用到linux csh,無奈沒有相關基礎只能到處查到處問
最近有需要解決兩個作業,已經搜尋了一天還是不會.想請大家幫忙在csh的環境下作業

1. 從1+到n

2. 從1到n中echo出質數

3.呈上題, 加起這些質數

麻煩大家了...
主題: Re: 迴圈問題...
作者: t1213121okok2017-11-02 16:24
第一題我寫出來了,給大家參考...

#!/bin/csh/


set n = $<
set i = 0
@ sum = 0

while ( $i < $n )
        @ i = $i + 1
        @ sum = $sum + $i
end


echo Sum = $sum
主題: Re: 迴圈問題...
作者: t1213121okok2017-11-03 13:55
第二題寫出來了

#!/bin/csh/

set n = $<
set i = 1

while ( $i < $n )
        @ i = $i + 1

        set j = 1

                while ( $j < $i )
                @ j = $j + 1
                if ( $i % $j == 0 ) break

        end

        if ( $i == $j ) echo $i
end
主題: Re: 迴圈問題...
作者: dark2017-11-05 17:49
作業的話 , 恐怕要符合數學較高分喔

while ( $i < $n )

        set j = 2
        set  k = `echo "sqrt($i) + 1" | bc`

        while ( $j <= $k )
                if ( $i % $j == 0 ) break
                @ j = $j + 1
        end

        if ( $j >= $k ) echo $i
        @ i = $i + 1
end

測到平方根即可 ... 數字大時 , 執行速度就倍數成長了

若老師的用意在第三題 , 那就該有個 j2 變數 , 暫存已經找到的質數清單
j 比清單小的情況 , 只跑質數清單 , 大於才 +1 跑 , 速度更快

還有 ... 進迴圈先 + 1 , 這有點奇怪 ... 還好這問題剛好沒錯
主題: Re: 迴圈問題...
作者: dark2017-11-05 18:06

j=5 剛跑完 , j2="2 3"

set j2="$j2 "$j

...
foreach x ( $j2 )
 ...
end
j=x

...