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

有两种方法:

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

 #include<iostream>
#include<cstring>
#include<cstdio>
#include<string>
#include<cmath>
#include<algorithm>
using namespace std;
int p[];//记录包括自身的完数个数
bool vis[];
int prime[1229+1];//如何估算比n小的素数的个数?? 提前打印即可,小于10000共1229个素数
void print_prime(){
memset(vis,false,sizeof(vis));
int i=;
int index=;
for(;i<;i++){
if(!vis[i]){
prime[index++]=i;
}
for(int j=;j<index&&prime[j]*i<;j++){
vis[prime[j]*i]=true;
if(i%prime[j]==){
break;
}
}
}
}
int work(int n){
int i=,ret=,total=,temp=n;
for(;prime[i]*prime[i]<=n;i++){
int sum=;
int num=;
while(n%prime[i]==){
num*=prime[i];
n/=prime[i];
sum+=num;
}
total*=sum;
}
if(n>){
total*=n+;
}
return total-temp;
}
void get_p(){
memset(p,,sizeof(p));
p[]=;
p[]=;
int i=;
for(;i<;i++){
if(i==work(i)){
p[i]=p[i-]+;
}
else{
p[i]=p[i-];
}
}
}
int main()//
{
int n;
cin>>n;
print_prime();
get_p();
//cout<<p[6]<<endl;
while(n--){
int num1,num2;
cin>>num1>>num2;
if(num1>num2){
num1=num1+num2;
num2=num1-num2;
num1=num1-num2;
}
cout<<p[num2]-p[num1-]<<endl;
}
return ;
}

法二:筛法

 #include<iostream>
#include<cstring>
#include<cstdio>
#include<string>
#include<cmath>
#include<algorithm>
using namespace std;
int main()//
{
int n;
cin>>n;
while(n--){
int num1,num2;
cin>>num1>>num2;
if(num1>num2){
num1=num1+num2;
num2=num1-num2;
num1=num1-num2;
}
int i=num1;
int num=;
for(;i<=num2;i++){
int j=;
int sum=;
for(;j<=i/;j++){
if(i%j==){
sum+=j;
}
}
if(sum==i){
num++;
}
}
cout<<num<<endl;
}
return ;
}

hdu 1460 完数的更多相关文章

  1. 题解报告:hdu 1406 完数

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1406 Problem Description 完数的定义:如果一个大于1的正整数的所有因子之和等于它的 ...

  2. HDU 1406 完数 因子的和

    http://acm.hdu.edu.cn/showproblem.php?pid=1406 完数的定义:如果一个大于1的正整数的所有因子之和等于它的本身,则称这个数是完数,比如6,28都是完数:6= ...

  3. HDOJ(HDU) 1406 完数

    Problem Description 完数的定义:如果一个大于1的正整数的所有因子之和等于它的本身,则称这个数是完数,比如6,28都是完数:6=1+2+3:28=1+2+4+7+14. 本题的任务是 ...

  4. HDU-1406 完数

    http://acm.hdu.edu.cn/showproblem.php?pid=1406 完数 Time Limit: 2000/1000 MS (Java/Others)    Memory L ...

  5. java程序设计之完数

    题目:一个数如果恰好等于它的因子之和,这个数就称为"完数".例如6=1+2+3.编程 找出1000以内的所有完数. 解题过程也很简单: public class wanshu { ...

  6. 程序设计入门——C语言 第6周编程练习 2 完数(5分)

    2 完数(5分) 题目内容: 一个正整数的因子是所有可以整除它的正整数.而一个数如果恰好等于除它本身外的因子之和,这个数就称为完数.例如6=1+2+3(6的因子是1,2,3). 现在,你要写一个程序, ...

  7. OpenMP求完数

    源代码: #include "stdafx.h" //必须写在首行,因为其前面的include都会被忽略 #include "omp.h" #include & ...

  8. 完数[HDU1406]

    完数 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission( ...

  9. 码农谷 找出N之内的所有完数

    题目描述 一个数如果恰好等于它的因子之和,这个数就称为"完数". 例如,6的因子为1.2.3,而6=1+2+3,因此6是"完数". 编程序找出N之内的所有完数, ...

随机推荐

  1. ASP.NET MVC中的控制器激活与反射之间的联系(帮助理解)

    ASP.NET Mvc是ASP.NET的一个框架,同样也是基于管道的设计结构.HttpModule和HttpHandler是ASP.NET的两个重要组件,同样的在Mvc中也是非常重要的组件.在应用程序 ...

  2. Windows上编译OpenShadingLanguage

    将OSL 1.3.0解压到[工作目录]/osl/OpenShadingLanguage 对Debug使用如下bat生成项目文件: @Echo off cd OpenShadingLanguage se ...

  3. html5 表格标签 table tr td

      最重要的三个 <table>     表格声明标签 属性: boarder    边框粗细 style    可配合css 使用 <tr>    行标签 table row ...

  4. Android应用开发以及设计思想深度剖析

    Android应用开发以及设计思想深度剖析(1) 21cnbao.blog.51cto.com/109393/956049

  5. HDU - 6215 2017 ACM/ICPC Asia Regional Qingdao Online J - Brute Force Sorting

    Brute Force Sorting Time Limit: 1 Sec  Memory Limit: 128 MB 题目连接 http://acm.hdu.edu.cn/showproblem.p ...

  6. cmd应用

    如何用cmd命令新建和打开一个隐藏文件夹 随着电脑的广泛应用,个人电脑的私人空间越来越大,很多人喜欢把个人的一些私隐的文件存放在电脑上,私隐文件当然是不想别人看到的,为了防止别人看不见自己的文件,可以 ...

  7. java 优秀文章集锦

    一个简易的静态网页服务器  https://www.cnblogs.com/longfurcat/p/10355514.html   浅析Servlet执行原理   https://www.cnblo ...

  8. js计算器案例

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>j ...

  9. leetcode-137-Single Number II-第二种解法

    题目描述: 详细的题目描述见上一篇博客<leetcode-137-Single Number II-第一种解法>,这里简单说一下. 有一个数组,所有元素都出现了三次,除了一个元素只出现了一 ...

  10. weex 初始化

    文档教程 一. 已有项目集成weex, 有时候会报错, 因为sdk中用到了socket pod 'WeexSDK' pod 'SocketRocket' 二. 在app启动方法 -didFinish ...