zoukankan      html  css  js  c++  java
  • 寻找素数算法实现

    寻找默认从1开始的N个素数

    void printPrime(int n, int column) {
        int prime = 2;
        printf("打印%d个素数
    ", n);
        for (int j = 0, odd = 1; j < n; odd++) {
            //生成一个素数
            bool fPrime = true;
            for (int k = 2; k <= sqrt(prime); k++)
                if (prime % k == 0) {
                    fPrime = false;
                    break;
                }
            if (fPrime) {//记录素数
                printf("%-6d ", prime);
                j++;
                if (j % column == 0) printf("
    ");
            }
            prime = odd * 2 + 1;//待判断的奇数
        }
    }

    从给定的任何正整数iStart处起,寻找N个素数

    void printPrime(int iStart, int n, int column) {
        int prime = (iStart == 1) ? 2 : iStart;
        printf("从%d开始打印%d个素数
    ", iStart, n);
        //odd起始要跳过已经判断了的奇数
        for (int j = 0, odd = (iStart % 2 == 0) ? iStart / 2 : (iStart - 1) / 2 + 1;
            j < n; odd++) {
            //生成一个素数
            bool fPrime = true;
            for (int k = 2; k <= sqrt(prime); k++)
                if (prime % k == 0) {
                    fPrime = false;
                    break;
                }
            if (fPrime) {//记录素数
                printf("%-6d ", prime);
                j++;
                if (j % column == 0) printf("
    ");
            }
            prime = odd * 2 + 1;//待判断的奇数
        }
    }

    寻找范围内iStart~iEnd的所有素数,并统计个数

    void printPrime(int iStart, int iEnd, int column,int &n) {
        int prime = (iStart == 1) ? 2 : iStart;
        printf("打印素数范围%d~%d
    ", iStart, iEnd);
        n = 0;
        //iEnd是奇数时,转换为未来奇数,并作为前一个奇数的临界条件
        iEnd = (iEnd % 2 == 0) ? iEnd / 2 : (iEnd - 1) / 2 + 1;
        for (int odd = (iStart % 2 == 0) ? iStart / 2 : (iStart - 1) / 2 + 1;
            odd <= iEnd; odd++) {
            //生成一个素数
            bool fPrime = true;
            for (int k = 2; k <= sqrt(prime); k++)
                if (prime % k == 0) {
                    fPrime = false;
                    break;
                }
            if (fPrime) {//记录素数
                printf("%-6d ", prime);
                n++;
                if (n % column == 0) printf("
    ");
            }
            prime = odd * 2 + 1;//待判断的奇数
        }
    }

     所有代码均经过测试,结果正确。

  • 相关阅读:
    MySQL管理工具-SQLyog 9.63的使用详解
    通讯录管理系统
    Mavenx学习找对方法,快速上手!
    晚风花间寺中人
    PE重装系统,U盘重装系统,一步到位,重装无忧!
    进入博客园的第一篇随笔,贡献给我最喜欢的作家-大冰
    天地有情尽白发,人间无意了沧桑
    狼和羊的故事(安徒生新篇)
    .Net Core CLR GC的浅度分析
    .net core 的夸代扫描标记card_table的细节分析
  • 原文地址:https://www.cnblogs.com/dalgleish/p/8832305.html
Copyright © 2011-2022 走看看