Skip to content

输出1k以内素数

Xu Pu edited this page Sep 28, 2015 · 2 revisions

简易版本

#include <stdio.h>

int main() {
    int flag;
    for (int i = 1; i < 1000; i ++) {
        flag = 0;
        for (int j = 2; j < i; j++) {
            if (i % j == 0) {
                flag = 1;
                break;
            }
        }
        if (flag == 0) {
            printf("%d\n", i);
        }
    }
    return 0;
}

优化版本

#include <stdio.h>
#include <math.h>

int main() {
    printf("1\n2\n");

    int flag;
    for (int i = 3; i < 1000; i += 2) { // 大于2的所有偶数都不是素数
        flag = 0;
        for (int j = sqrt(i); j >= 3; j--) { // 如果是合数那么 a*b 和 b*a 都成立所以只需判断其一
            if (i % j == 0) {
                flag = 1;
                break;
            }
        }
        if (flag == 0) {
            printf("%d\n", i);
        }
    }
    return 0;
}

以及你还可以搜到素数筛法等其他求解方法。

Clone this wiki locally