作者 主題: 迴圈問題...  (閱讀 702 次)

0 會員 與 1 訪客 正在閱讀本文。

t1213121okok

  • 可愛的小學生
  • *
  • 文章數: 4
    • 檢視個人資料
迴圈問題...
« 於: 2017-11-02 10:23 »
最近工作需要用到linux csh,無奈沒有相關基礎只能到處查到處問
最近有需要解決兩個作業,已經搜尋了一天還是不會.想請大家幫忙在csh的環境下作業

1. 從1+到n

2. 從1到n中echo出質數

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

麻煩大家了...

t1213121okok

  • 可愛的小學生
  • *
  • 文章數: 4
    • 檢視個人資料
Re: 迴圈問題...
« 回覆 #1 於: 2017-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

t1213121okok

  • 可愛的小學生
  • *
  • 文章數: 4
    • 檢視個人資料
Re: 迴圈問題...
« 回覆 #2 於: 2017-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

dark

  • 俺是博士!
  • *****
  • 文章數: 1533
    • 檢視個人資料
Re: 迴圈問題...
« 回覆 #3 於: 2017-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 , 這有點奇怪 ... 還好這問題剛好沒錯

dark

  • 俺是博士!
  • *****
  • 文章數: 1533
    • 檢視個人資料
Re: 迴圈問題...
« 回覆 #4 於: 2017-11-05 18:06 »

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

set j2="$j2 "$j

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

...