首页 > 编程语言 >C++判断素数模板

C++判断素数模板

时间:2024-08-18 16:27:30浏览次数:10  
标签:int namespace visit C++ 素数 num include check 模板

首先是朴素方法

代码:

#include<bits/stdc++.h>
using namespace std;
int num;
bool check(int num){
    if(num < 2){
       return false;
    }
    for(int i=2;i<=sqrt(num);i++){
        if(num%i==0){
            return false;
        }
    }
    return true;
}
int main(){
	check(num);
	return 0;
} 

然后是埃氏筛(从头找没被删的数,再把他的所有倍数都删掉)

代码:

#include <iostream>
using namespace std;
int visit[1000000];
void check(int n){
    visit[0]=1;
    visit[1]=1;
    for(int i=2;i<=n;i++){
        if(!visit[i]){
            for(int j=i*i;j<=n;j+=i){
                visit[j]=1;
            }
        }
    }
}
int main(){
    int n;
    cin>>n;
    check(n);
    for(int i=1;i<=n;i++){
        if(!visit[i])
        cout<<i<<endl;
    }
    return 0;
}

最后是欧拉筛(其实就是优化后的埃氏筛)

代码:

#include<bits/stdc++.h>
using namespace std;
int prime[100000],visit[100000];
void check(){
    visit[1]=1;
    for(int i=2;i<=100000;i++){
        if(!visit[i]){
            prime[++prime[0]]=i;
        }
        for(int j=1;j<=prime[0]&&i*prime[j]<=100000;j++){
            visit[i*prime[j]]=1;
            if(i%prime[j]==0){
                break;
            }
        }
        continue;
    }
    for(int i=1;i<=100000;i++){
        if(!visit[i]){
            cout<<i<<' ';
        }
    }
    return;
}
int main(){
    check();
    return 0;
}

标签:int,namespace,visit,C++,素数,num,include,check,模板
From: https://blog.csdn.net/yang_54qq/article/details/141299463

相关文章

  • C++(>>)
    目录1.位移操作符(BitwiseRightShiftOperator)2.输入流操作符(StreamExtractionOperator)3.在OpenCV中的重载操作符4.在类中的重载操作符总结在C++中,>>是一个多功能的操作符,根据上下文的不同可以有不同的含义和用途。下面详细介绍其在各种场景中的用法。1.位移操作......
  • C++(cv::VideoCapture::open())
    在OpenCV中,cv::VideoCapture类用于从视频文件或摄像头捕获视频流。cap.open()是cv::VideoCapture类的一个成员函数,用于打开视频源。以下是关于cap.open()的详细介绍:函数定义cv::VideoCapture::open有两个主要的重载形式:boolopen(intindex)这个重载版本用于打开一......
  • [Lang] 函数模板
    [Lang]函数模板1.自动类型推导和显示指定类型自动类型推导不能进行隐式类型转换。显式指定类型可以进行隐式类型转换。但前提是函数模板的参数必须按值传递,因为按引用传递不支持隐式类型转换。#include<iostream>usingnamespacestd;template<typenameT>TmyAdd(T......
  • 【C++二分查找】1954. 收集足够苹果的最小花园周长
    本文涉及的基础知识点C++二分查找LeetCode1954.收集足够苹果的最小花园周长给你一个用无限二维网格表示的花园,每一个整数坐标处都有一棵苹果树。整数坐标(i,j)处的苹果树有|i|+|j|个苹果。你将会买下正中心坐标是(0,0)的一块正方形土地,且每条边都与两条坐......
  • C++可控制线程
    大家好,本人是C++新人qing。我学习编程也快十年了,这一年来我用C++写了一些程序,有了一些新奇的想法。我写了一些诸如“C语言存储变长字符串”、“C++可控制线程对象”、“TCP通信接收任意长度字符串”的代码。这些都是我的拙作,希望能够分享给大家,主要是新人可以练练手,有意见也......
  • 线段树模板,洛谷原题P3373
    线段树区间乘、加,范围求和,QWQ原题#include<bits/stdc++.h>#definePIIpair<int,int>#defineintlonglong#defineDBdoublenamespaceFastIO{ inlineintread(intMOD,int&ret){ charch=getchar();intngtv=1; if(MOD==0){while(ch<&#......
  • 鼠标键盘控制c++
     感觉鼠标控制挺好玩的 要想完成鼠标的一系列控制,首先你需要一个头文件:#include<windows.h> 以下是鼠标单击左键的代码,可以做成子程序(我是背下来的):mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);//按下左键Sleep(10);//要给一些应用反应时间mouse_event(MOUSEEVENTF_L......
  • 【全网独家】OpenCV C++ 图像处理实战 :多二维码识别(代码+测试部署)
    介绍在现代社会,二维码无处不在,从支付、物流到用户身份验证,二维码的应用极其广泛。本文将详细介绍如何使用OpenCV在C++环境下实现多二维码识别。我们将涵盖其应用场景、原理解释、算法流程图以及实际代码实现。应用使用场景仓储物流管理:快速扫描多个包裹上的二维码,实现高......
  • c++ builder哪个版本更好用
    1、当前,功能相对完全和成熟的是XE7。2、如果开发传统的程序,C++BUILDER2006最成熟轻量。二、可以难说哪个更好用,每个版本都有它自个的特点,典型的版的本个人理解供你参考:1、C++BUILDER4.0是BCB(C++BUILDER的简称)的第一个win下的版本,后继还有个小升级到C++BUILDER4.5,如果你想在......
  • C++入门篇一
    C++入门篇一一.缺省参数1.缺省参数的概念2.缺省参数分类二.函数重载1.函数重载概念2.函数重载代码举例三.引用1.引用的概念2.引用特性3.常引用4.使用场景(1).做参数(2).做返回值5.传值、传引用效率比较6.引用和指针的区别7.引用和指针的不同点一.缺省......