基本思路就是求个合数个数,然后再倒着减,注意1的问题。
合数考虑最小因子不会大于n\sqrt{n}n​,所以规模稍小。
离谱的是,我的亲爱的组合数学老师让我手速1-1000的素数个数,要求交一份latex的格式,于是我使用了打表法:

#include<bits/stdc++.h>
using namespace std;
int prime[11]={2,3,5,7,11,13,17,19,23,29,31};
struct Node{int sum,num,id;
};
queue<Node> Q;
int ans=0;
void BFS(){int cnt=0;for(int i=0;i<11;++i){Node now={prime[i],i,1};Q.push(now);}while(!Q.empty()){Node now=Q.front();Q.pop();cnt++;if((now.id % 2==1)){ans+=(1000/now.sum);}else{ans-=(1000/now.sum);}if(cnt&&(cnt%10==0)){cout<<((now.id % 2==1)?"+":"-")<<"\\lfloor \\frac{1000}{"<<now.sum<<"}\\rfloor\\\\"<<endl;}else{if(cnt%10==1)cout<<"&"<<((now.id % 2==1)?"+":"-")<<"\\lfloor \\frac{1000}{"<<now.sum<<"}\\rfloor"<<endl;elsecout<<((now.id % 2==1)?"+":"-")<<"\\lfloor \\frac{1000}{"<<now.sum<<"}\\rfloor"<<endl;}for(int i=now.num+1;i<11;++i){Node tmp;tmp.sum=now.sum*prime[i];tmp.num=i;tmp.id=now.id+1;if(tmp.sum>1000)continue;Q.push(tmp);}}
}
int main(){BFS();cout<<ans;
} 

实际效果:

使用容斥原理求1000以内素数个数相关推荐

  1. c语言求1000以内素数个数的方法

    求解的方法有很多,本文只介绍一种比较简单的方法. 算法:当输入的数字 n 不能被 2~(n - 1)整除时,n 为素数            反之,则 n 不为素数  源代码: #include< ...

  2. 求1000以内素数平均值

    素数的定义 素数又称质数,指在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数. 换句话说,只有两个正因数(1和自己)的自然数即为素数.比1大但不是素数的数称为合数. 1和0既非素 ...

  3. python之求1000以内素数

    # 素数求法: i = 2 prime_number = [] while i < 1001:j = 2while j <= i:if i == j:prime_number.append ...

  4. C++中如何读取一个数的位数_求1000以内的水仙花数

    点击上方 蓝字关注我们 大家好,我是阿汤哥. 看知乎上有朋友说还不明白怎么判断水仙花数,今天我们就来看看这个问题.(PS:"求1000以内的水仙花数"这道题阿汤哥记忆犹新.到现在还 ...

  5. 一道面试题:用多线程求1000以内的素数有多少个?并给出消耗时间

    我曾经去一个公司面试,遇到这么一个题目:求1000以内的素数有多少个?用多线程实现,并给出消耗时间.我想了半天,没有想出多线程的解决方案.今天因为机缘到了,我浅谈下我的解法. 这道题,显然得考虑两个问 ...

  6. 求1000以内的全部素数

    #include <stdio.h> #include <stdlib.h> #define MAXNUM 1000//定义一个最大数,现在是求1000以内的素数,定义为100 ...

  7. java求1000以内的回文素数_C语言求回文素数

    任意的整数,当从左向右读与从右向左读是相同的,且为素数时,称为回文素数.求 1000 以内的所有回文素数. 算法思想 实例的重点是判断一个数是否是回文素数.要输出 1000 以内的所有回文素数,首先应 ...

  8. 求1000以内的所有素数(质数)

    /* 求1000以内所有素数及素数个数 i<=(int)sqrt(1.0*n)即可 */ #include<iostream> #include<cstdio> #inc ...

  9. C语言求1000以内的素数

    Today,让我来带大家学习怎样用C语言求1000以内的素数并输出 在这里,我用到的求素数的方法是用 i 除以 2 ~ i - 1 之间的每一个整数,如果都不能整除,那 i 就是素数,下面就不多说了, ...

最新文章

  1. Django链接数据库步骤
  2. CSS选择器的声明与嵌套
  3. 中国水产饲料市场发展深度调研及十四五前景预测报告2022年版
  4. Dell最近的几款显示器看上去还不错的样子
  5. UIButton在不同状态下显示不同背景色
  6. Ubuntu16.04下实时监控CPU/GPU内存的使用情况
  7. GNU C getopt()、getopt_long() 与 getopt_long_only() 获取命令行参数
  8. 开源一个简单的VC界面库
  9. GET 和POST的用法
  10. 强化学习——多智能体强化学习
  11. SAP中通过格式调整解决导出EXCEL表字段显示不全问题
  12. 一点思考 less interests more interest 选好一个行业慢慢积淀
  13. Spring集成elasticSearch,搭建、使用、加密
  14. 远程桌面无法连接远程计算机是什么原因?
  15. hdu2094 c语言
  16. porta rch_Smeerch.it
  17. php mysql 压力测试_MySQL的性能基线收集及压力测试
  18. 获取微信小程序的昵称和手机号
  19. MT5正版白标搭建。MT5CRM源码出售。
  20. Android 使用CameraX拍照,自动对焦,以及证件照剪切

热门文章

  1. 微信小程序手机号注册获取验证码+验证判断
  2. 如何监测高价值货物在物流运输过程中受到的振动和冲击?全面保障货物安全
  3. 设计模式_结构型模式学习
  4. java-php-python-springboot住院管理系统计算机毕业设计
  5. 实变函数与泛函分析(一)集合论
  6. C++虚析构函数和纯虚析构函数
  7. “圣洁拉萨 健康之旅” 2022拉萨文化和旅游消费季之四季旅游 巡回促销推介会圆满落幕
  8. Medkoo Biosciences 艾美捷Lusutrombopag说明书
  9. oppo R9 WLAN使用代理图解
  10. numpy-PDL-Pandas