用多型計算一百以內的質數

2021-06-17 00:49:10 字數 1314 閱讀 7793

出處:

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...