1. 程式人生 > >ACM 入門1170

ACM 入門1170

/*題目描述 求100~200之間的全部素數,
輸入 無
輸出 100~200之間的全部素數,一個素數佔一行。
樣例輸入 無
樣例輸出
101
103

197
199 */

首先,咱們先用整數大法來判定

#include<stdio.h>
int main()
{
    int n=100,i=2;   
    for (n=100;n<=200;n++)     //代表循壞從100執行至200
        {
            for (i=2;i<n;i++)  //判定條件:n是否在2或n-1之間能整除
           {
            if (n%i==0) break; // 如能整除,停止語句,注意,詞語句只會影響第二個for語句
           }
           if (i>=n) printf("%d\n",n); //如果i>n-1了,在判定條件之外,證明其是素數
        }
    return 0;
}

當然還有另外一種方法,平方根大法,此種方法求起來速度更快;

#include<stdio.h>
#include<math.h>
int main()
{
    int n=100,i=2,x;
    for (n=100;n<=200;n++)                 //代表循壞從100執行至200
        {
            x=sqrt(n);                     //x是n的平方根形式的整數部分,這個不能放到int語句下方,否則x的值就成唯一常數,沒意義了
            for (i=2;i<=x;i++)             //判定條件:i是否在2或平方根n之間能被n整除
           {
            if (n%i==0) break;             // 如能整除,停止語句,注意,詞語句只會影響第二個for語句
           }
           if (i>x) printf("%d\n",n);      //如果i>n-1了,在判定條件之外,證明其是素數
        }
    return 0;
}

喜歡就評論下方把