100~200之间的素数(及其四个优化方案)
?要求素數,首先我們要知道什么是素數,在解題的時候,不要急著去尋找方法解題,而是要先了解它的根本,才可以在遇到類似題的時候輕松面對解決
質數(prime number)又稱素數,有無限個。一個大于1的自然數,除了1和它本身外,不能被其他自然數整除,換句話說就是該數除了1和它本身以外不再有其他的因數;否則稱為合數。
程序如下:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i;
for (i = 100; i <= 200; i++) ? //也可自行設定數值范圍
{
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 = 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;
}
寫程序最原始的目的可能是解決某個題或者某個實際問題,但是,當以后我們進入社會,你要解決的就全部都是實際問題,那時候你面對的可能不僅僅只是解決它,而是要不斷的優化它,要讓成本更低,時間更短,效率更高,而這種優化解決問題的思路,要從寫小程序開始培養。
轉載于:https://blog.51cto.com/10921020/1737097
總結
以上是生活随笔為你收集整理的100~200之间的素数(及其四个优化方案)的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 自动化测试框架:没有Surprise的原
- 下一篇: LeetCode题目Java代码解答 (
