2 3 5 7的倍数
题目五、2 3 5 7的倍数
给出一个数N,求1至N中,有多少个数不是2 3 5 7的倍数。 例如N = 10,只有1不是2 3 5 7的倍数。
Input
输入1个数N(1 <= N <= 10^18)。
Output
输出不是2 3 5 7的倍数的数共有多少。
输入示例
10
10000
1234567890
98765
11111111111111111
输出示例
1
2285
282186946
22575
2539682539682540
解题思路:
先说我看到这题的思路,枚举1到N的所有整数用一个if判断i%2||i%3||i%5||i%7,如果为真,则ans计数器加一,时间复杂度O(n),
在1 <= N <=10^18的情况下直接GG吧。
于是我就联想到在素数打表中的欧拉筛法,可以这么想,将1到N的所有数以十为单位分组,第二个第四个第五个第六个第八个第十个数不用判断,就只需要判断每一组中,第一个元素,第三个元素,第七个元素,第九个元素是不是3和7的倍数。这个时间复杂度略低于第一个,遇到大树还是直接GG了。
第三个方法我就换了个思路,同余定理,具体的理论百度就好了。在本题中,在1到N中不是2 3 5 7的倍数的数
= N - N中是2的倍数的个数
- N中是3的倍数的个数
- N中是5的倍数的个数
- N中是7的倍数的个数
+N中是2和3的倍数的个数
+N中是2和5的倍数的个数
+N中是2和7的倍数的个数
+N中是3和5的倍数的个数
+N中是3和7的倍数的个数
+N中是5和7的倍数的个数
-N中是2,3,5的倍数的个数
-N中是2,3,7的倍数的个数
-N中是2,5,7的倍数的个数
-N中是3,5,57的倍数的个数
+N中是2,3,5,7的倍数的个数;
时间复杂度从O(n)降到了O(1),代码就是几个除法运算的加减就能算出结果,注意这里的N要以long long存储。
代码:
#include <cstdio> int main() {long long n;long long count = 0;scanf("%lld", &n);count = n - n / 2 - n / 3 - n / 5 - n / 7 + n / (2 * 3) + n / (2 * 5) + n / (2 * 7) + n / (3 * 5) + n / (3 * 7) + n / (5 * 7)- n / (2 * 3 * 5 ) - n / (2 * 5 * 7) - n / (2 * 3 * 7) - n / (3 * 5 * 7)+ n / (2 * 3 * 5 * 7);printf("%lld", count);return 0; }
转载于:https://www.cnblogs.com/MATLABlearning001/p/5396961.html
2 3 5 7的倍数相关推荐
- 求最小众倍数java,【python网易】最小倍众数
题目:给定5个正整数, 它们的最小的众倍数是指的能够被其中至少三个数整除的最小正整数. 给定5个不同的正整数, 请计算输出它们的最小众倍数. 输入描述: 输入包括一行,一行中有五个各不相同的正整数a, ...
- 差异基因分析:fold change(差异倍数), P-value(差异的显著性)
做基因表达分析时必然会要做差异分析(DE) DE的方法主要有两种: Fold change t-test fold change的意思是样本质检表达量的差异倍数,log2 fold change的意思 ...
- 电压放大倍数公式运放_【专题2:电子工程师 之 硬件】 之 【43.运算放大器详解e 运算放大器虚短和虚断】...
希望本是无所谓有,无所谓无的,这正如脚下的路,其实地上本没有路,走的人多了,也便成了路....原创不易,文章会持续更新,感谢您的关注 1.运放原理图符号 (1)引脚3:运放的正输入端(同向输入端). ...
- Python使用matplotlib函数subplot可视化多个不同颜色的折线图、使用set_major_locator函数指定坐标轴主刻度数值倍数(MultipleLocator)
Python使用matplotlib函数subplot可视化多个不同颜色的折线图.使用set_major_locator函数指定坐标轴主刻度数值倍数(MultipleLocator) 目录
- Python使用matplotlib函数subplot可视化多个不同颜色的折线图、使用set_minor_locator函数指定坐标轴次刻度数值倍数(MultipleLocator)
Python使用matplotlib函数subplot可视化多个不同颜色的折线图.使用set_minor_locator函数指定坐标轴次刻度数值倍数(MultipleLocator) 目录
- 【c语言】查找200以内既是3的倍数又是5的倍数的数
<程序设计基础-c语言>杨莉 刘鸿翔 科学出版社 ISBN 978-7-03-032903-5 p18 习题1 3.算法设计:查找200以内即是3的倍数又是5的倍数 #include< ...
- 分贝dB与放大倍数的转换关系及对照表
今天遇到了dB的问题,可是我总觉得dB貌似对我的理解产生了障碍,有缘看到了百度文库中的这篇文章,写的很简洁,就不用自己总结了.很感谢,这里转载过来. https://wenku.baidu.com/v ...
- 分贝dB与放大倍数的转换关系
增益(dB)简介 1.分贝就是放大器增益的单位 --- dB ,放大器输出与输入的比值为放大倍数,单位"倍",如10倍放大器,100倍放大器.当改用"分贝"做单 ...
- 放大倍数超5万倍的Memcached DDoS反射攻击,怎么破?
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由腾讯游戏云发表于云+社区专栏 背景:Memcached攻击创造DDoS攻击流量纪录 近日,利用Memcached服务器实施反射DDoS ...
- 判断一个数是否是2的倍数----------面试算法
思考: 如果要判断一个数是2的倍数,只需要判断这个数的二进制的第一位是1,其他的位都是0就可以. 也就是形如: 100 10000 1000000 注意,上面都是二进制的表示 关键是怎么判断只有第一位 ...
最新文章
- html如何让左右字段不能编辑,HTML中让表单input等文本框为只读不可编辑的方法...
- C#后台线程和UI的交互
- 【数据结构与算法】之深入解析“排列序列”的求解思路与算法示例
- python微博自动评论转发_python3 调用新浪微博api实现自动发布评论
- uc的剪切板能关掉吗_创意手工 | 一张纸折出专属礼品袋,漂亮简单还实用!你爱了吗?!...
- VDI序曲三十 APP-V4.6SP1之OFFICE07补丁升级
- 一个简单的EXCEL 导入SQL 的例子
- idea配置jfinal_intellij idea如何创建JFinal项目
- bin文件转dat文件
- Redis入门指南-2
- adobe animate2022动画制作软件
- java 自定义 转换器_自定义类型转换器
- SpringBoot+MyBatisPlus+Vue+ElementUI实现前后端分离的物业管理系统
- 京东AI:戴口罩人脸识别pytorch开源库
- Word2007、Word2010、Word2013空格变成小点解决
- PG的timestamp
- STM32 ADC最大采样频率
- Groovy和Grails介绍(1)
- 一文搞定Diff算法
- Python:计算电费