hdu 1460 完数

注意:num1和num2的大小未知,需比较!

有两种方法:

法一:素数打印+素数分解(求因数和公式)

 1 #include<iostream>
 2 #include<cstring>
 3 #include<cstdio>
 4 #include<string>
 5 #include<cmath>
 6 #include<algorithm>
 7 using namespace std;
 8 int p[10005];//记录包括自身的完数个数
 9 bool vis[10005];
10 int prime[1229+1];//如何估算比n小的素数的个数??   提前打印即可,小于10000共1229个素数
11 void print_prime(){
12     memset(vis,false,sizeof(vis));
13     int i=2;
14     int index=0;
15     for(;i<10000;i++){
16         if(!vis[i]){
17             prime[index++]=i;
18         }
19         for(int j=0;j<index&&prime[j]*i<10000;j++){
20             vis[prime[j]*i]=true;
21             if(i%prime[j]==0){
22                 break;
23             }
24         }
25     }
26 }
27 int work(int n){
28     int i=0,ret=1,total=1,temp=n;
29     for(;prime[i]*prime[i]<=n;i++){
30         int sum=1;
31         int num=1;
32         while(n%prime[i]==0){
33             num*=prime[i];
34             n/=prime[i];
35             sum+=num;
36         }
37         total*=sum;
38     }
39     if(n>1){
40         total*=n+1;
41     }
42     return total-temp;
43 }
44 void get_p(){
45     memset(p,0,sizeof(p));
46     p[2]=0;
47     p[3]=0;
48     int i=4;
49     for(;i<10000;i++){
50         if(i==work(i)){
51             p[i]=p[i-1]+1;
52         }
53         else{
54             p[i]=p[i-1];
55         }
56     }
57 }
58 int main()//10000
59 {
60     int n;
61     cin>>n;
62     print_prime();
63     get_p();
64     //cout<<p[6]<<endl;
65     while(n--){
66          int num1,num2;
67          cin>>num1>>num2;
68          if(num1>num2){
69             num1=num1+num2;
70             num2=num1-num2;
71             num1=num1-num2;
72         }
73          cout<<p[num2]-p[num1-1]<<endl;
74     }
75     return 0;
76 }

 

法二:筛法

 1 #include<iostream>
 2 #include<cstring>
 3 #include<cstdio>
 4 #include<string>
 5 #include<cmath>
 6 #include<algorithm>
 7 using namespace std;
 8 int main()//10000
 9 {
10     int n;
11     cin>>n;
12     while(n--){
13         int num1,num2;
14         cin>>num1>>num2;
15         if(num1>num2){
16             num1=num1+num2;
17             num2=num1-num2;
18             num1=num1-num2;
19         }
20         int i=num1;
21         int num=0;
22         for(;i<=num2;i++){
23             int j=2;
24             int sum=1;
25             for(;j<=i/2;j++){
26                 if(i%j==0){
27                    sum+=j;
28                 }
29             }
30             if(sum==i){
31                 num++;
32             }
33         }
34         cout<<num<<endl;
35     }
36     return 0;
37 }

 

转载于:https://www.cnblogs.com/Deribs4/p/4270508.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/291882.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

03-递归

数据结构和算法 基于《算法图解》—Aditya Bhargava和《数据结构》—严蔚敏 第3章 递归 3.1 递归 假设在一堆嵌套的盒子里找钥匙&#xff0c;对比循环和递归。 使用循环解决&#xff1a; #使用while循环&#xff1a;只要盒子堆不是空&#xff0c;就从中取出一个盒子&#x…

linux c之提示format‘%d’ expects argument of type ‘int’, but argument 2 has type ‘long int’ [-Wformat

1、问题 有个long int data;我输出的时候printf("data is %d", data);出现下面警告 自己竟然不知道 长整型怎么打印出来&#xff0c;日了狗。 2、解决办法 md&#xff0c;m为指定的输出字段的宽度。如果数据的位数小于m&#xff0c;则左端补以空格&#xff0c;若大…

PostgreSQL 从源码找出哪些操作需要超级用户权限 - 阿里云rds_superuser和superuser有什么区别...

标签 PostgreSQL , 超级用户 , superuser 背景 在数据库中哪些操作需要超级用户的权限才能执行&#xff1f; 这个问题翻文档可能翻不全面&#xff0c;或者是已经比较难以完成的任务。 但是从源码里面是比较好找出这个答案的。 权限 例如 postgres# select * from pg_authid;rol…

linux c之通过消息队列实现进程通信

1、消息队列的介绍 消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。 每个数据块都被认为含有一个类型,接收进程可以独立地接收含有不同类型的数据结构。我们可以通过发送消息来避免命名管道的同步和阻塞问题。但是消息队列与命名管道一样,每个数据块都有一…

Asp.Net Core部署:早知道,还是docker!以及一点碎碎念

前言AspNetCore技术栈在我们团队里的使用也有一段时间了&#xff0c;之前的部署方式一直是本地编译之后上传可执行文件到服务器&#xff0c;使用supervisor来管理进程这种很原始的方式。参考之前的文章&#xff1a;Asp.Net Core学习笔记&#xff1a;&#xff08;五&#xff09;…

04-快速排序

数据结构和算法 基于《算法图解》—Aditya Bhargava 和《数据结构》—严蔚敏 第4章 快速排序 4.1 分而治之 divide and conquer , 简称D&C&#xff1a;一种著名的递归式问题解决方法。 例子1&#xff1a; 假设你是农场主&#xff0c;有一小块土地。要求将这块地均匀地分…

android studio no marked region found along edge Found along top edge

由于种种原因&#xff0c;导致9图已经不是9图格式了&#xff0c;但是在Eclipse里面不会报错&#xff0c;在android studio 里面会报错 Error:9-patch image D:\download\avatar-android-master\avatar-android-master\sample\src\main\res\drawable-hdpi\abc_list_divider_holo…

lisp画靶子 visual_基于VisualLISP的AutoCAD绘图命令的二次开发_沈良翼

2009AutoCAD是由美国Autodesk公司于20世纪80年代初为微机上应用CAD技术而开发的绘图程序软件包&#xff0c;经过不断的完善&#xff0c;现已经成为国际上广为流行的绘图工具。AutoCAD允许用户定制菜单和工具栏&#xff0c;并能利用内嵌语言Autolisp、VisualLisp、VBA、ADS、ARX…

.Net相关

Lucene 全文搜索 http://lucenenet.apache.org/ Memcached 分布式缓存 http://memcached.org/ selenium UI自动化测试 http://docs.seleniumhq.org/ TestDriven.Net Unit Test http://www.testdriven.net/default.aspx MySql 数据库 http://dev.mysql.com/ dotPeek 反编译 http…

linux c之((void *) - 1)是啥意思

1、问题 今天看到进程通信通过使用内存共享来实现&#xff0c;看到了((void *)-1)&#xff0c;当时一脸蒙逼&#xff0c;不知道什么意思。 2、理解 我一开始以为是空指针减1&#xff0c;自己好傻逼 实际意思是((void *)-1)是把-1转换成指针0xFFFFFFFF 3、总结 当一个函数返…

Linux下安装compsoer ,并使用composer安装laravel

为什么80%的码农都做不了架构师&#xff1f;>>> 1、composer安装 https://getcomposer.org/download/打开composer官网。根据提示linux下可以使用php安装。 php -r "copy(https://getcomposer.org/installer, composer-setup.php);" php -r "if (ha…

AspNetCore在docker部署时遇到一个小坑

哦吼之前刚说了尝试了使用docker来部署AspNetCore应用&#xff08;Asp.Net Core部署&#xff1a;早知道&#xff0c;还是docker!以及一点碎碎念&#xff09;&#xff0c;结果这才刚上班就遇到问题了 …我这项目用的数据库是Oracle&#xff0c;之前直接运行没啥问题&#xff0c;…

JS篇 学习笔记

ECMA Script API: Array.prototype.splice(start, deleteCount, value ...) 数组操作中有&#xff1a;push、pop、unshift左移入、shift左进出&#xff1b;splice不仅可以完成删除操作&#xff0c;而且还可以从中间插入&#xff1a;当deleteCount参数为0时就可以将后面的多个参…

05-散列表

数据结构和算法 基于《算法图解》—Aditya Bhargava 和《数据结构》—严蔚敏 第5章 散列表 假设你在一家杂货店上班。有顾客来买东西时&#xff0c;你得到一个本子中查找价格。如果本子的内容不是按字母顺序来排序的&#xff0c;你可能为查找苹果价格而浏览每一页&#xff0c…

疯狂ios讲义疯狂连载之实现游戏逻辑(2)

13.6.5 定义获取通道的工具方法这里所谓的通道指的是一个方块上、下、左、右4个方向上的空白方块图13.10显示了一个方块四周的通道。图13.10 方块四周的通道下面是获取某个坐标点四周通道的4个方法。程序清单codes/13/Link/Link/sources/board/FKGameService.m13.6.6 没有转折点…

linux之进程间通信--使用信号

一、什么是信号用过Windows的我们都知道&#xff0c;当我们无法正常结束一个程序时&#xff0c;可以用任务管理器强制结束这个进程&#xff0c;但这其实是怎么实现的呢&#xff1f;同样的功能在Linux上是通过生成信号和捕获信号来实现的&#xff0c;运行中的进程捕获到这个信号…

opencv 平面法向量_在OpenCV中绘制平面的法向量

我使用2D条形码识别3D空间中的平面&#xff0c;我想绘制相对于其中心的法线。这是我用来计算正常的代码def compute_normal(camera, board, bounds, frame):extrinsics, ip, op get_extrinsics(camera, frame, board, bounds)extrinsic extrinsics[0]if not extrinsic: retur…

CentOS升级Python2.7及安装pip

CentOS升级Python2.7及安装pip<?xml version"1.0" encoding"UTF-8"?> CentOS升级Python2.7及安装pip1) 升级Python2.7?1234567891011121314151617181920212223242526272829303132python -V # 查看版本&#xff1a;Python 2.6.6mkdir -p ~/Env/py…

解决Maven工程中报 Missing artifact jdk.tools:jdk.tools

2019独角兽企业重金招聘Python工程师标准>>> 解决方法&#xff1a; 在pom.xml中添加如下依赖&#xff1a; <dependency> <groupId>jdk.tools</groupId> <artifactId>jdk.tools</artifactId> <version>…

回到地球之后,这个男人创建了Ubuntu

文 | 大东出品 | OSC开源社区&#xff08;ID&#xff1a;oschina2013&#xff09;2002 年&#xff0c;莫斯科当地时间 4 月 25 日 9 时 26 分&#xff0c;满载着补给和 3 名宇航员的“联盟-TM 号”航天飞船在“联盟 U”火箭的推进下飞往国际空间站。同行的三人中&#xff0c;年…