hdu 1460 完数
注意: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 完数的更多相关文章
- 题解报告:hdu 1406 完数
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1406 Problem Description 完数的定义:如果一个大于1的正整数的所有因子之和等于它的 ...
- HDU 1406 完数 因子的和
http://acm.hdu.edu.cn/showproblem.php?pid=1406 完数的定义:如果一个大于1的正整数的所有因子之和等于它的本身,则称这个数是完数,比如6,28都是完数:6= ...
- HDOJ(HDU) 1406 完数
Problem Description 完数的定义:如果一个大于1的正整数的所有因子之和等于它的本身,则称这个数是完数,比如6,28都是完数:6=1+2+3:28=1+2+4+7+14. 本题的任务是 ...
- HDU-1406 完数
http://acm.hdu.edu.cn/showproblem.php?pid=1406 完数 Time Limit: 2000/1000 MS (Java/Others) Memory L ...
- java程序设计之完数
题目:一个数如果恰好等于它的因子之和,这个数就称为"完数".例如6=1+2+3.编程 找出1000以内的所有完数. 解题过程也很简单: public class wanshu { ...
- 程序设计入门——C语言 第6周编程练习 2 完数(5分)
2 完数(5分) 题目内容: 一个正整数的因子是所有可以整除它的正整数.而一个数如果恰好等于除它本身外的因子之和,这个数就称为完数.例如6=1+2+3(6的因子是1,2,3). 现在,你要写一个程序, ...
- OpenMP求完数
源代码: #include "stdafx.h" //必须写在首行,因为其前面的include都会被忽略 #include "omp.h" #include & ...
- 完数[HDU1406]
完数 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission( ...
- 码农谷 找出N之内的所有完数
题目描述 一个数如果恰好等于它的因子之和,这个数就称为"完数". 例如,6的因子为1.2.3,而6=1+2+3,因此6是"完数". 编程序找出N之内的所有完数, ...
随机推荐
- 所有中心对称五字母域名生成,扫了一下,com的基本上都被注册了。。。
public static void main(String[] args) { String[] letter = new String[]{"i","m", ...
- C#基础入门 二
C#基础入门 二 循环语句 与C语言中用法相同. continue:结束本次循环(continue)后面的代码不再执行,进入下次循环(通常与if连用). 数组 一维数组定义:int[] intArra ...
- 域适应(Domain adaptation)
定义 在迁移学习中, 当源域和目标的数据分布不同 ,但两个任务相同时,这种 特殊 的迁移学习 叫做域适应 (Domain Adaptation). Domain adaptation有哪些实现手段呢? ...
- rsync文件同步详解
一. 环境和测试说明 rsync(remote sync)是unix及类unix平台下的数据镜像备份软件,它不像FTP那样需要全备份,rsync可以根据数据的变化进行差异备份,从而减少数据流量,提高 ...
- UIResponder笔记
UIResponder是什么 可以响应UIEvent的类,是UIApplication, UIView及UIViewController的父类.它的父类是NSObject 管理第一响应者. 是否是第一 ...
- IT项目管理者常用的项目管理工具(国产VS进口)?
对于IT项目管理工具相信很多IT项目管理者都不陌生,因为它是我们每天都要接触的,但是在前期选择IT项目管理工具的时候往往是我们最头疼的时候,所以今天我就给大家带来几款常用的国内外IT项目管理工具介绍: ...
- web 应用的部署
一.项目管理 : zentao(国产开源),其他 project.redmine.trac 二.自动部署: jenkins:自动化配置 docker:容器,类似虚拟机,不过只是本机系统的内核的一个虚拟 ...
- 1.ajax简单实现异步交互
效果:点击获取信息 testAjax.jsp: <%@ page language="java" contentType="text/html; charset=U ...
- [转载] 第三篇:数据仓库系统的实现与使用(含OLAP重点讲解)
阅读目录 前言 创建数据仓库 ETL:抽取.转换.加载 OLAP/BI工具 数据立方体(Data Cube) OLAP的架构模式 小结 回到顶部 前言 上一篇重点讲解了数据仓库建模,它是数据仓库开发中 ...
- jenkins 判断是手动触发还是定时器触发
根据变量BUILD_CAUSE的值可以判断本次触发是手动触发还是定时器触发 手动触发:MANUALTRIGGER 定时器触发:TIMERTRIGGER