100~200之間的素數(及其四個優化方案)

 要求素數,首先咱們要知道什麼是素數,在解題的時候,不要急着去尋找方法解題,而是要先了解它的根本,才能夠在遇到相似題的時候輕鬆面對解決小程序

質數(prime number)又稱素數,有無限個。一個大於1的天然數,除了1和它自己外,不能被其餘天然數整除,換句話說就是該數除了1和它自己之外再也不有其餘的因數;不然稱爲合數。
ide

程序以下:優化

#include<stdio.h>spa

#include<stdlib.h>blog

int main()get

{it

int i;io

for (i = 100; i <= 200; i++)   //也可自行設定數值範圍class

{效率

int j = 0;

for (j = 2; j <= i - 1; j++)

{

if (i%j == 0)

{

break;

}          //若是i%j=0說明i能夠整除j,則跳出if語句

}

if (i == j)

{

printf("%d  ", i);

}        

}

system("pause");

return 0;

}

結果以下:

wKioL1agaOiTj2jzAAAVqokjaIw433.png

優化方案一:

int main()

{

int i;

for (i = 101; i <= 200; i+=2)  //因爲100不是素數,因此能夠從101開始

{

int j = 0;

for (j = 2; j <= i - 1; j++)

{

if (i%j == 0)

{

break;

}          //若是i%j=0說明i能夠整除j,則跳出if語句

}

if (i == j)

{

printf("%d  ", i);

}        

}

system("pause");

return 0;

}

優化方案二:

int main()

{

int i;

for (i = 101; i <= 200; i+=2)  //因爲100不是素數,因此能夠從101開始

{

int j = 0;

for (j = 3; j <= i - 1; j++)

{

if (i%j == 0)

{

break;

}          //若是i%j=0說明i能夠整除j,則跳出if語句

}

if (i == j)

{

printf("%d  ", i);

}        

}

system("pause");

return 0;

}

優化方案三:

int main()

{

int i;

for (i = 101; i <= 200; i+=2)  //因爲100不是素數,因此能夠從101開始

{

int j = 0;

for (j = 3; j <= i - 1; j+=2)

{

if (i%j == 0)

{

break;

}          //若是i%j=0說明i能夠整除j,則跳出if語句

}

if (i == j)

{

printf("%d  ", i);

}        

}

system("pause");

return 0;

}

優化方案四:

#include<stdio.h>

#include<stdlib.h>

#include<math.h>

int main()

{

int i;

for (i = 101; i <= 200; i+=2)   //因爲100不是素數,因此能夠從101開始

{

int j = 0;

for (j = 3; j <= sqrt(i); j+=2)

{

if (i%j == 0)

{

break;

}          //若是i%j=0說明i能夠整除j,則跳出if語句

}

if (j>sqrt(i))

{

printf("%d  ", i);

}        

}

system("pause");

return 0;

}



寫程序最原始的目的多是解決某個題或者某個實際問題,可是,當之後咱們進入社會,你要解決的就所有都是實際問題,那時候你面對的可能不單單只是解決它,而是要不斷的優化它,要讓成本更低,時間更短,效率更高,而這種優化解決問題的思路,要從寫小程序開始培養。

相關文章
相關標籤/搜索