我記得我第一題的處理方式…
先設一個動態陣列吧…
例如 sum[0]....sum[1].......sum[n]
sum[0]就處理0~99999的數值
sum[1]就處理100000~9999900000
sum[2]就處理10000000000~999990000000000
以此類推…
但是呢…基本上的數值都是只有在處理0~99999而已…
當sum[0]超過99999時,就sum[1]+1,然後sum[0]-100000
sum[1]以此類推…
最後出來就會發覺不管是sum[n]最大數都只會在0~99999之間,
之後再用字串的型態把sum[n]~sum[0]加起來,再顯示…
======================================
第二題…
單就質數來說…
我想我會用『數值除以質數、除以2』來判斷是否為質數吧…
這個需要回想一下= =||
=======================================
可能有些東西我記錯了…
就麻煩大家改正吧= =||~
★這傢洗艾台玩啦!☆
Noahtsai wrote:
目前用double或是long還可以,
但萬一題目出到數目連型態n都無法接受這麼長的數字,用公式也無法計算
sum=n(n+1)/2 -n
更不用說用迴圈了 ,速度慢
我只想到用字元陣列處理的方式這種呆方式
類似
char a[1];
char b[1];
char sum[2];
While(b="99999999999999999999999999999999999999999")
{
..............................
...............................
for(i;i<=a.length-1;i++)
for(j;j<=b.length-1;j++)
{
sum=a[i]+b[j];// 字串相加處理
..................................................
}
//適當調整字串長度
redim sum[aum.length+1];
redim a[a.legth+1];
redim b[b.length+1];
}
隨便寫沒有考慮很清楚,可能還要處理a與b累加的問題
不知道有沒有更好方式?
字元陣列用List代替會不會比較好呢?
題目二的話...
可以從頭一個一個刪 雖然這樣好像滿笨的
比如說 找1-100的數 1, 2, 3, 4, 5, 6, ..., 98, 99, 100
一定會先把1 和二的倍數刪掉嘛
就變成3, 5, 7, 9, ..., 97, 99
然後再把三的倍數消掉 3
5, 7, 11, 13, ...95, 97
再來就是5 然後7
其實就是把新的數列的每個數字除以第一個數
能整除的就消掉
最後這些當過第一個數的(除了一)就是質數
只是要存這數列就要用不少memory吧