這個程式的功能是: 如果自然數i是素數,則設a[i]為1,否則設為0.首先把陣列中的所有元素設為1,否則設為0.首先把陣列中的所有元素設為1,已表明沒有任何數以被證明是非素數.然後,把陣列中所對應索引處已證明是非素數(已知素數的倍數)的元素設為0.如果所有更小素數的倍數都已設為0,a[i]仍為1,則可知它是素數.
因為程式中所用的陣列由最簡單的元素型別(0-1值)組成的陣列,所以直接使用由位組成的陣列比整數組成的更省空間.另外,如果n值過大,某些程式設計環境可能要求把陣列定義為全域性變數,或者我們可以動態地為它分配空間
#include #include #include #include using namespace std;
#define ok 1
#define error -1
#define true 1
#define false 0
#define n 1000
typedef int status;
int main()
//遍歷陣列找出下標為素數的,並將所有下標為該素數的倍數的值改為0
for(i = 2; i < n; i++)}}
//輸出2~n範圍內的素數
for(i = 2; i < n; i++)
}return 0;
}
分治法例項 來自 演算法 C語言實現
使用分治法求最大值 這個函式將陣列a l a r 分成a l a m 和a m 1 a r 兩部分,分別求出每一部分的最大元素 遞迴地 並返回較大的那乙個作為整個陣列的最大元素.如果陣列大小是偶數,則兩部分大小相等 如果是奇數,第一部分比第二部分的大小大1.include include inclu...
c語言實現磁碟排程演算法 C語言實現洗牌演算法
首先看一道題目 有乙個大小為100的陣列,裡面的元素是從 1 到 100,隨機從陣列中選擇50個不重複數。用math.random 100,就可以拿到乙個 0 到 99 的隨機數,是不是重複50次就可以了?當然不是,假如,第一次隨機到5,第二次如果再一次隨機到5的話,要求是選擇不重複的數,所以要選出...
C語言實現遞迴演算法
c語言實現遞迴演算法 遞迴演算法是運用於函式呼叫中的。遞迴的概念 在乙個函式體內呼叫自身稱為函式的遞迴呼叫。遞迴呼叫的原理 需要在函式內滿足一定的條件後不在呼叫自身或者結束,或者呼叫其它函式,否則容易出現類似死迴圈的情況,程式將癱瘓。已知 f 1 1 f 0 0,fn n f n 1 f n 2 求...