用C++编写的素数判定程序

一、常见的素数判定算法

素数判定是数论中的基础问题,一般常用的算法有:试除法、埃氏筛、线性筛等。

试除法:对于一个数n,从2开始只要能整除n,n就不是素数。

比如259,因为能被7整除,所以不是素数。

这个算法简单,容易实现,但是当n很大时,需要进行很多次除法操作,效率比较低。

埃氏筛:将从2开始的所有自然数入列,取出队首的数p,将p的倍数依次排除,直到队列为空,则不在这个过程中被筛去的数便是素数。

比如100以内的素数:2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97。

线性筛:试除法的时间复杂度为O($\sqrt n$),埃氏筛的时间复杂度为O(nloglogn),而线性筛法的时间复杂度为O(n)。其基本思想是:
如果x是质数,那么x的倍数一定不是质数;如果x不是质数,那么x一定是之前某个质数的倍数,它已经在这个质数的筛法中被标记过了。

void get_prime(int n) {
    memset(v, 0, sizeof(v));
    memset(prime, 0, sizeof(prime));
    int cnt = 0;
    for(int i = 2; i <= n; i++) {
        if(v[i] == 0) {
            prime[cnt] = i;
            cnt++;
        }
        for(int j = 0; j < cnt && i * prime[j] <= n; j++) {
            v[i * prime[j]] = 1;
            if(i % prime[j] == 0) break;
        }
    }
}

二、C++的相关语法

C++是一种高级的程序设计语言,它结合了高级语言和低级语言的优点,可以进行高效的系统级编程和高级应用程序开发。下面介绍一些C++常用的语法。

1. 变量:变量是用于存储值的内存位置。在C++中,变量必须在使用之前被声明。变量的声明语法:类型 变量名;

2. if语句:if语句用于在程序中执行不同的动作,根据条件执行不同的代码块。if语句的语法:

if(condition) {
    // code if condition is true
}

3. for循环:for循环是一种循环结构,可以重复执行一定的代码,直到达到指定的次数。for循环的语法:

for(initialization; condition; updation) {
    // code
}

4. 函数:函数是一种独立的代码块,可以被多次调用。在C++中,函数的声明必须在使用之前。函数的语法:

type function_name(type parameter1, type parameter2,...) {
    // code
    return value;
}

三、基于C++的素数判定程序实例

下面是一个基于C++的素数判定程序实例。这个程序使用了线性筛法来判定素数。

#include 
using namespace std;

const int MAXN = 1000000;

int prime[MAXN], v[MAXN], cnt;

void get_prime(int n) {
    memset(v, 0, sizeof(v));
    memset(prime, 0, sizeof(prime));
    cnt = 0;
    for(int i = 2; i <= n; i++) {
        if(v[i] == 0) {
            prime[cnt] = i;
            cnt++;
        }
        for(int j = 0; j < cnt && i * prime[j] <= n; j++) {
            v[i * prime[j]] = 1;
            if(i % prime[j] == 0) break;
        }
    }
}

bool is_prime(int n) {
    if(n < 2) return false;
    for(int i = 2; i * i <= n; i++) {
        if(n % i == 0) return false;
    }
    return true;
}

int main() {
    int x = 37;
    if(is_prime(x)) {
        cout << x << " is a prime number." << endl;
    } else {
        cout << x << " is not a prime number." << endl;
    }
    get_prime(100);
    for(int i = 0; i < cnt; i++) {
        cout << prime[i] << " ";
    }
    cout << endl;
    return 0;
}

四、总结

本文主要介绍了素数判定的常见算法,包括试除法、埃氏筛和线性筛法。同时,也介绍了C++的一些基本语法以及一个基于C++的素数判定程序实例。对于初学者来说,这些知识是入门必备的。通过学习这些算法和语法,可以让我们更好地理解程序设计的本质并提高代码的效率。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/286711.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-23 03:48
下一篇 2024-12-23 03:48

相关推荐

  • Python程序需要编译才能执行

    Python 被广泛应用于数据分析、人工智能、科学计算等领域,它的灵活性和简单易学的性质使得越来越多的人喜欢使用 Python 进行编程。然而,在 Python 中程序执行的方式不…

    编程 2025-04-29
  • python强行终止程序快捷键

    本文将从多个方面对python强行终止程序快捷键进行详细阐述,并提供相应代码示例。 一、Ctrl+C快捷键 Ctrl+C快捷键是在终端中经常用来强行终止运行的程序。当你在终端中运行…

    编程 2025-04-29
  • Python程序文件的拓展

    Python是一门功能丰富、易于学习、可读性高的编程语言。Python程序文件通常以.py为文件拓展名,被广泛应用于各种领域,包括Web开发、机器学习、科学计算等。为了更好地发挥P…

    编程 2025-04-29
  • 用不同的方法求素数

    素数是指只能被1和自身整除的正整数,如2、3、5、7、11、13等。素数在密码学、计算机科学、数学、物理等领域都有着广泛的应用。本文将介绍几种常见的求素数的方法,包括暴力枚举法、埃…

    编程 2025-04-29
  • Python购物车程序

    Python购物车程序是一款基于Python编程语言开发的程序,可以实现购物车的相关功能,包括商品的添加、购买、删除、统计等。 一、添加商品 添加商品是购物车程序的基础功能之一,用…

    编程 2025-04-29
  • 爬虫是一种程序

    爬虫是一种程序,用于自动获取互联网上的信息。本文将从如下多个方面对爬虫的意义、运行方式、应用场景和技术要点等进行详细的阐述。 一、爬虫的意义 1、获取信息:爬虫可以自动获取互联网上…

    编程 2025-04-29
  • Vb运行程序的三种方法

    VB是一种非常实用的编程工具,它可以被用于开发各种不同的应用程序,从简单的计算器到更复杂的商业软件。在VB中,有许多不同的方法可以运行程序,包括编译器、发布程序以及命令行。在本文中…

    编程 2025-04-29
  • Python一元二次方程求解程序

    本文将详细阐述Python一元二次方程求解程序的相关知识,为读者提供全面的程序设计思路和操作方法。 一、方程求解 首先,我们需要了解一元二次方程的求解方法。一元二次方程可以写作: …

    编程 2025-04-29
  • 如何使用GPU加速运行Python程序——以CSDN为中心

    GPU的强大性能是众所周知的。而随着深度学习和机器学习的发展,越来越多的Python开发者将GPU应用于深度学习模型的训练过程中,提高了模型训练效率。在本文中,我们将介绍如何使用G…

    编程 2025-04-29
  • Web程序和桌面程序的区别

    Web程序和桌面程序都是进行软件开发的方式,但是它们之间存在很大的区别。本文将从多角度进行阐述。 一、运行方式 Web程序运行于互联网上,用户可以通过使用浏览器来访问它。而桌面程序…

    编程 2025-04-29

发表回复

登录后才能评论