/*
求出小於1000的質數(第四版)
*/
#include <stdio.h>
int main(void)
{
int i, no;
int prime[500]; /* 儲存質數的陣列 */
int ptr = 0; /* 已知質數的個數 */
unsigned long counter = 0;
prime[ptr++] = 2; /* 2是質數 */
prime[ptr++] = 3; /* 3也是質數 */
for (no = 5 ; no <= 1000; no += 2) { /* 以奇數為對象 */
for (i = 1; i < ptr; i++) { /* 將已知奇數再拿來除 */
counter++;
if (no % prime[i] == 0) /* 若可以整除就不是質數 */
break; /* 至此不要再重複操作 */
}
if (ptr == i) /* 最後仍不能整除 */
prime[ptr++] = no; /* 增加至陣列中 */
}
for (i = 0; i < ptr; i++)
printf("乘除的次數:%lu\n", counter
);
return (0);
}
LyoKICDmsYLlh7rlsI/mlrwxMDAw55qE6LOq5pW477yI56ys5Zub54mI77yJCiovCiNpbmNsdWRlICA8c3RkaW8uaD4KCmludCBtYWluKHZvaWQpCnsKICAgIGludCAgICAgaSwgbm87CiAgICBpbnQgICAgIHByaW1lWzUwMF07ICAgICAgICAgICAgICAgICAgICAgLyog5YSy5a2Y6LOq5pW455qE6Zmj5YiXICovCiAgICBpbnQgICAgIHB0ciA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgLyog5bey55+l6LOq5pW455qE5YCL5pW4ICovCiAgICB1bnNpZ25lZCBsb25nICBjb3VudGVyID0gMDsKCiAgICBwcmltZVtwdHIrK10gPSAyOyAgICAgICAgICAgICAgICAgICAgICAgLyogMuaYr+izquaVuCAqLwogICAgcHJpbWVbcHRyKytdID0gMzsgICAgICAgICAgICAgICAgICAgICAgIC8qIDPkuZ/mmK/os6rmlbggKi8KCiAgICBmb3IgKG5vID0gNSA7IG5vIDw9IDEwMDA7IG5vICs9IDIpIHsgICAgLyog5Lul5aWH5pW454K65bCN6LGhICovCiAgICAgICAgZm9yIChpID0gMTsgaSA8IHB0cjsgaSsrKSB7ICAgICAgICAgLyog5bCH5bey55+l5aWH5pW45YaN5ou/5L6G6ZmkICovCiAgICAgICAgICAgIGNvdW50ZXIrKzsKICAgICAgICAgICAgaWYgKG5vICUgcHJpbWVbaV0gPT0gMCkJICAgICAgICAvKiDoi6Xlj6/ku6XmlbTpmaTlsLHkuI3mmK/os6rmlbggKi8KCWJyZWFrOyAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgIC8qIOiHs+atpOS4jeimgeWGjemHjeikh+aTjeS9nCAqLwogICAgICAgfQogICAgICAgaWYgKHB0ciA9PSBpKQkJICAgICAgICAgICAgICAgIC8qIOacgOW+jOS7jeS4jeiDveaVtOmZpCAqLwogICAgICAgICAgICBwcmltZVtwdHIrK10gPSBubzsJICAgICAgICAgICAgLyog5aKe5Yqg6Iez6Zmj5YiX5LitICovCiAgfQogIGZvciAoaSA9IDA7IGkgPCBwdHI7IGkrKykKICAgICAgIHByaW50ZigiJWRcbiIsIHByaW1lW2ldKTsKCiAgcHJpbnRmKCLkuZjpmaTnmoTmrKHmlbjvvJolbHVcbiIsIGNvdW50ZXIpOwogIAogIHJldHVybiAoMCk7Cn0K