出處:
view plain
copy to clipboard
print?
#include
class sieve
; class sourcesieve:public sieve
; int nextnumber();
private:
int _i;
}; class sieve2: public sieve
; int nextnumber();
private:
sieve & _src;
}; class sieve3: public sieve
; int nextnumber();
private:
sieve2 & _src;
}; class sieve5: public sieve
; int nextnumber();
private:
sieve3 & _src;
}; class sieve7: public sieve
; int nextnumber();
private:
sieve5 & _src;
}; int sourcesieve::nextnumber()
return _i++;
} int sieve2::nextnumber()
while (i%2==0 && i!=2 && i !=-1);
return i;
} int sieve3::nextnumber()
while (i%3==0 && i!=3 && i !=-1);
return i;
} int sieve5::nextnumber()
while (i%5==0 && i!=5 && i !=-1);
return i;
} int sieve7::nextnumber()
while (i%7==0 && i!=7 && i !=-1);
return i;
} int main(void)
std::cout<< i <<" ";
} return 0;
} 設計思路:
利用類的多型性質,對要除法測試的數字進行類似遞迴的類中傳遞,有乙個除法測試不符合就重新取數(也就是各個類中nextnumber方法使用迴圈的原因),src為數字源。之所以從7->5->3->2 ->3->5>7這樣的遞迴順序進行是因為100以內2的倍數的數字比較多,這樣可以節省運算。
計算n以內的質數表
1.設計乙個時間複雜度低於o n 2 的演算法,計算n以內的質數表,並且計算你的演算法的複雜度.注 本文最初發表於汕頭大學鬱金香bbs.發信人 guomin cs03.working for tomorrow 信區 program 標 題 re 演算法考試樣題 發信站 鬱金香bbs站 2006年01...
用「埃氏篩法」求2 100以內的質數。
思路 先去掉2的倍數,再去掉3的倍數,再去掉5的倍數,依此類推,最後剩下的就是素數。質數 又稱素數 是指在大於1的自bai然數中,除了1和它本身外,不能被其他自然數整除 除0以外 的數稱之為質數。求n以內的所有素數 param n 範圍 return n以內的素數 private static li...
python 查詢 1000以內的質數
python 查詢 1000以內的質數 1.判斷某個數字是否是質數 print 判斷某個數字是否是質數 num 17i 2is prime true 標識當前數字是否為質數,true 是 false 不是 while i num if num i 0 is prime false break i i...