程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 計算質數

計算質數

編輯:關於C語言

 

今天需要找一個合適的質數,心算、筆算、上網找工具?也許自己寫一個更方便,算是緊張工作中休閒娛樂一下,代碼比較簡陋,性能也差,不建議計算100,000以上的質數

view plain

#include <vector> 

#include <conio.h> 

 

void Prime(int max) 

    std::vector<bool> isNotPrimes(max + 1); 

    isNotPrimes[0] = true; 

    isNotPrimes[1] = true; 

    isNotPrimes[2] = false; 

 

    for (int i = 2; i * 2 <= max; i++) 

    { 

        for (int j = 2; ; j++) 

        { 

            int product = i * j; 

            if (product > max) 

            { 

                break; 

            } 

            else 

            { 

                isNotPrimes[product] = true; 

            } 

        } 

    } 

 

    for (int i = 0, j = 0, count = isNotPrimes.size(); i < count; i++) 

    { 

        if (!isNotPrimes[i])  

        { 

            printf("%4d ", i); 

            j++; 

            if (j % 10 == 0) 

            { 

                printf("\n"); 

            } 

        } 

    } 

 

int main(int argc, char* argv[]) 

    if (argc != 2) 

    { 

        printf("%s <max> 計算0 ~ max之間的質數\n", argv[0]); 

        _getch(); 

        return 0; 

    } 

 

    int max = atoi(argv[1]); 

    if (max < 2) 

    { 

        printf("沒有任何結果\n"); 

        _getch(); 

        return 0; 

    } 

 

    Prime(max); 

    _getch(); 

 

    return 0; 

摘自:郭月豐的專欄

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved