打印100~200 之间的素数
編寫思想:對100到200之間的數依次進行for循環判斷,看其是否為素數。判斷方法:對于一個自然數,除了1以外,不是素數就是合數。若該數字是素數,則不能被除了1和它自身以外的數整除;而一個數如果是合數,則它的所有因子不會大于對其開根號所得出的數,由此可得出每個數最多時候的循環次數。
初次生成的源代碼如下:
#include<stdio.h> #include<math.h> int?main() {int?primer,variabe,sign;for(primer=101;primer<201;primer++){for(variabe=2;variabe<=sqrt(primer);variabe++){sign=0;if(primer%variabe==0)??break;else??sign=1;}if(sign==1)printf("%-5d",primer);}return?0; }運行結果如下:
101 ? 103 ? 107 ? 109 ? 113 ? 127 ? 131 ? 137 ? 139 ? 149 ? 151 ? 157 ? 163 ? 167
173 ? 179 ? 181 ? 191 ? 193 ? 197 ? 199
由于以上程序產生了一些不必要的循環,增加了程序的時間復雜度,故而對其進行了改進。
改進1:去掉了標志變量sign,減少了內存的占用;
改進2:由于找的是100到200之間的素數,因此其間的偶數均不必進行判斷,故而只剩下奇數,又由于奇數肯定無法被偶數整除,故而去掉variable中的偶數循環,降低了程序的時間復雜度。
改進后的代碼如下:
#include<stdio.h> #include<math.h> int?main() {int?primer,variabe;for(primer=101;primer<201;primer+=2){for(variabe=3;variabe<=sqrt(primer);variabe+=2){if(primer%variabe==0)??break;}if(variabe>sqrt(primer))printf("%-5d",primer);}return?0; }運行結果同上一致:
101 ? 103 ? 107 ? 109 ? 113 ? 127 ? 131 ? 137 ? 139 ? 149 ? 151 ? 157 ? 163 ? 167
173 ? 179 ? 181 ? 191 ? 193 ? 197 ? 199
轉載于:https://blog.51cto.com/lookforward2/1717920
總結
以上是生活随笔為你收集整理的打印100~200 之间的素数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: POPSpring动画参数详解
- 下一篇: IOS学习之多线程(9)--NSOper