题解 | #素数#

素数

https://www.nowcoder.com/practice/7f4be54b37a04fdaa4ee545819151114

#include <stdio.h>
#include <math.h>
#include <stdbool.h>
// 判断质数:
bool Prime(int x) {
    if (x == 1)
        return false;
    int y = sqrt(x);
    for (int i = 2; i <= y; i++) {
        if (x % i == 0)
            return false;
    }
    return true;
}
typedef struct {
    int data;
    bool p;
    int cmp;
} DataP;
int main() {
    int n;
    scanf("%d", &n);
    DataP D[n + 1];
    for (int i = 0; i < n + 1; i++) {
        D[i].data = i;
        D[i].cmp = 0;
    }
    D[0].p = 0;
    D[0].cmp = 1;
    D[1].p = 0;
    D[1].cmp = 1;
    for (int j = 2; j < n ; j++) {
        if (D[j].cmp == 0) {
            int k = j;
            if (Prime(D[k].data)) {
                D[k].p = 1;
                D[k].cmp = 1;
                while (k * k < n) {
                    k *= k;
                    D[k].p = 0;
                    D[k].cmp = 1;
                }
            } else {
                D[k].p = 0;
                D[k].cmp = 1;
                while (k * k < n) {
                    k *= k;
                    D[k].p = 0;
                    D[k].cmp = 1;
                }
            }
        } else
            continue;
    }
    for (int l = 0; l < n ; l++) {
        if (D[l].p && l % 10 == 1)
            printf("%d ", D[l].data);
        else
            continue;
    }
    printf("\n");
    return 0;
}

全部评论

相关推荐

10-24 13:36
门头沟学院 Java
Zzzzoooo:更新:今天下午有hr联系我去不去客户端,拒了
点赞 评论 收藏
分享
10-05 23:02
东北大学 Java
我说句实话啊:那时候看三个月培训班视频,随便做个项目背点八股,都能说3 40w是侮辱价
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务