列出任意正整数之内的所有素数

seele42 2018-01-21 11:42:08
#include <stdio.h>
#include <stdlib.h>

int main()
{
int n = 0;
int i = 0;
int x = 0;
int cnt = 0;
int *a;

scanf("%d", &n);
a = (int *)malloc(n*sizeof(int));
for (i=0; i<=n; i++){
a[i] = 1;
}

for(i=2; i<=n; i++){
if (a[i]==1){
for(x=2; x*i<=n; x++){
a[x*i] = 0;
}
printf("%d ", i);
cnt++;
if (cnt%10==0){
printf("\n");
}
}
}

free(a);

return 0;
}

代码可以跑起来,想知道有没有哪里还可以改进,谢谢各位!
...全文
459 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
自信男孩 2018-01-22
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int is_prime(int n);

int main()
{
    int n = 0;
    int i = 0;
    int x = 0;
    int k;
    int cnt = 0;
    int *a;

    scanf("%d", &n);
    a = (int *)malloc((n / 2 + 1) * sizeof(int));

    if (n < 2)
        return 0;


    k = 0;
    a[k++] = 2;
    printf("%d ", 2);
    for (i = 3; i <= n; i++) {
        if (is_prime(i)) {
            a[k++] = i;
            printf("%d ", i);
            cnt++;
            if (cnt % 10 == 0)
                printf("\n");
        }
    }

    putchar(10);
    free(a);

    return 0;
}

int is_prime(int n)
{
    int i;

    int len = sqrt(n) + 1;
    for (i = 2; i < len; i++)
        if (n % i == 0)
            break;
    if (i >= len)
        return 1;

    return 0;
}
参考一下吧
Commencel 2018-01-22
  • 打赏
  • 举报
回复
楼主如果需求速度的话,可以去搜一下素数筛法
赵4老师 2018-01-22
  • 打赏
  • 举报
回复
Finding prime numbers - Kenneth Haugland Different schemas for finding prime numbers explained with code http://www.codeproject.com/Articles/429694/Finding-prime-numbers
1 目录 一.数论.... 4 1.阶乘最后非零位 ...... 4 2. 模线性方程(组) ..... 4 3. 素数表.. 6 4. 素数随机判定(miller_rabin) .. 6 5. 质因数分解 .. 7 6. 最大公约数欧拉函数 ... 8 二.图论_匹配 . 9 1. 二分图最大匹配(hungary 邻接表形式) ..... 9 2. 二分图最大匹配(hungary 邻接表形式,邻接阵接口) ...... 10 3. 二分图最大匹配(hungary 邻接阵形式) ... 10 4. 二分图最大匹配(hungary 正向表形式) ... 11 5. 二分图最佳匹配(kuhn_munkras 邻接阵形式) .. 11 6. 一般图匹配(邻接表形式) . 12 7. 一般图匹配(邻接表形式,邻接阵接口) .... 13 8. 一般图匹配(邻接阵形式) . 14 9. 一般图匹配(正向表形式) . 15 三.图论_生成树 ... 16 1. 最小生成树(kruskal 邻接表形式) ..... 16 2. 最小生成树(kruskal 正向表形式) ..... 17 3. 最小生成树(prim+binary_heap 邻接表形式) ..... 19 4. 最小生成树(prim+binary_heap 正向表形式) ..... 20 5. 最小生成树(prim+mapped_heap 邻接表形式) .. 21 6. 最小生成树(prim+mapped_heap 正向表形式) .. 22 7. 最小生成树(prim 邻接阵形式)... 23 8. 最小树形图(邻接阵形式) . 24 四.图论_网络流 ... 25 1. 上下界最大流(邻接表形式) 25 2. 上下界最大流(邻接阵形式) 26 3. 上下界最小流(邻接表形式) 27 4. 上下界最小流(邻接阵形式) 29 5. 最大流(邻接表形式) .. 30 6. 最大流(邻接表形式,邻接阵接口) ..... 31 7. 最大流(邻接阵形式) .. 32 8. 最大流无流量(邻接阵形式) 32 9. 最小费用最大流(邻接阵形式) ... 33 五. 图论_最短路径 34 1. 最短路径(单源bellman_ford 邻接阵形式) . 34 2. 最短路径(单源dijkstra_bfs 邻接表形式) 35 3. 最短路径(单源dijkstra_bfs 正向表形式) 35 4. 最短路径(单源dijkstra+binary_heap 邻接表形式) .. 36 2 5. 最短路径(单源dijkstra+binary_heap 正向表形式) .. 37 6. 最短路径(单源dijkstra+mapped_heap 邻接表形式) 38 7. 最短路径(单源dijkstra+mapped_heap 正向表形式) 39 8. 最短路径(单源dijkstra 邻接阵形式) 40 9. 最短路径(多源floyd_warshall 邻接阵形式) ..... 40 六. 图论_连通性 .... 41 1. 无向图关键边(dfs 邻接阵形式) . 41 2. 无向图关键点(dfs 邻接阵形式) . 42 3. 无向图块(bfs 邻接阵形式) .. 43 4. 无向图连通分支(bfs 邻接阵形式) .... 43 5. 无向图连通分支(dfs 邻接阵形式) .... 44 6. 有向图强连通分支(bfs 邻接阵形式) 44 7. 有向图强连通分支(dfs 邻接阵形式) 45 8. 有向图最小点基(邻接阵形式) ... 46 七. 图论_应用 46 1.欧拉回路(邻接阵形式) 46 2. 前序表转化 47 3. 树的优化算法 ...... 48 4. 拓扑排序(邻接阵形式). .... 49 5. 最佳边割集 50 6. 最佳顶点割集 ...... 51 7. 最小边割集 52 8. 最小顶点割集 ...... 53 9. 最小路径覆盖 ...... 55 八. 图论_NP 搜索.. 55 1. 最大团(n 小于64)(faster).. 55 2. 最大团 58 九. 组合... 59 1. 排列组合生成 ...... 59 2. 生成gray 码 . 60 3. 置换(polya) 61 4. 字典序全排列 ...... 61 5. 字典序组合 62 6. 组合公式.... 62 十. 数值计算.. 63 1. 定积分计算(Romberg) ...... 63 2. 多项式求根(牛顿法) .. 64 3. 周期性方程(追赶法) .. 66 十一. 几何...... 67 1. 多边形 67 2. 多边形切割 70 3. 浮点函数.... 71 4. 几何公式.... 76 5. 面积.... 78 3 6. 球面.... 79 7. 三角形 79 8. 三维几何.... 81 9. 凸包(graham) 89 10. 网格(pick) 91 11. 圆 ...... 92 12. 整数函数.. 94 13. 注意.. 96 十二. 结构...... 97 1. 并查集 97 2. 并查集扩展(friend_enemy) .. 98 3. 堆(binary) ... 98 4. 堆(mapped) 99 5. 矩形切割.... 99 6. 线段树...... 100 7. 线段树扩展 . 102 8. 线段树应用 . 105 9. 子段和...... 105 10. 子阵和.... 105 十三. 其他.... 106 1. 分数.. 106 2. 矩阵.. 108 3. 日期.. 110 4. 线性方程组(gauss) ... 111 5. 线性相关.. 113 十四. 应用.... 114 1. joseph 114 2. N 皇后构造解 ..... 115 3. 布尔母函数 . 115 4. 第k 元素.. 116 5. 幻方构造.. 116 6. 模式匹配(kmp) .. 118 7. 逆序对数.. 118 8. 字符串最小表示 119 9. 最长公共单调子序列 ...... 119 10. 最长子序列 ...... 120 11. 最大子串匹配 .. 121 12. 最大子段和 ...... 122 13. 最大子阵和 ...... 123

33,321

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧