完数[hdu1406]

PoorLitt1eThin9 PoorLitt1eThin9     2022-08-14     671

关键词:

完数

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 27275 Accepted Submission(s): 10213

 

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

本题的任务是判断两个正整数之间完数的个数。


Input
输入数据包含多行,第一行是一个正整数n,表示测试实例的个数,然后就是n个测试实例,每个实例占一行,由两个正整数num1和num2组成,(1<num1,num2<10000) 。


Output
对于每组测试数据,请输出num1和num2之间(包括num1和num2)存在的完数个数。


Sample Input
2
2 5
5 7


Sample Output
0
1

把10000以内的完数全算出来,不用一个一个算,像打质数表那样用筛法就行。还有就是,输入的a可能会大于b。

#include <stdio.h>
#include <string.h>
int f[30000], s[30000];
int main() {
    memset(f, 0, sizeof(f));
    for(int i = 1; i <= 10000; i++) {
        for(int j = i + i; j <= 10000; j += i) {
            f[j] += i;
        }
    }
    s[0] = 0;
    s[1] = 1;
    for(int i = 2; i <= 10000; i++) {
        if(f[i] == i) {
            s[i] = s[i - 1] + 1;
        } else {
            s[i] = s[i - 1];
        }
    }
    int t, a, b, x;
    scanf("%d", &t);
    while(t--) {
        scanf("%d%d", &a, &b);
        if(a > b) {
            x = a;
            a = b;
            b = x;
        }
        printf("%d\n", s[b] - s[a - 1]);
    }
    return 0;
}
View Code

 

 

题解报告:hdu1406完数(代码片段)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1406水题!!!(注意给定区间i,j的大小,如果i>j要交换两个值保证符合区间的定义)AC代码:1#include<bits/stdc++.h>2usingnamespacestd;3intmain()45intn,n1,n2,num,sum;6cin>>n;7while 查看详情

32:完数个数

32完数个数作者:xxx时间限制:1S章节:循环问题描述:完数的定义:如果一个大于1的正整数的所有真因子(不包括自己的那些因子)之和等于它的本身,则称这个数是完数,比如6,28都是完数:6=1+2+3;28=1+2+4+7+14。本题的任务是判断两... 查看详情

九度oj题目1050:完数

题目1050:完数时间限制:1秒内存限制:32兆特殊判题:否提交:8778解决:3612题目描述:   求1-n内的完数,所谓的完数是这样的数,它的所有因子相加等于它自身,比如6有3个因子1,2,3,1+2+3=6,那么6是完数。即完数是... 查看详情

hdu3081(kb11-n二分答案+最大流)

MarriageMatchIITimeLimit:2000/1000MS(Java/Others)    MemoryLimit:32768/32768K(Java/Others)TotalSubmission(s):4248    AcceptedSubmission(s):1406ProblemDescriptio 查看详情

找出1000以内的所有完数

...目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。 1packagecom.li.FiftyAlgorthm;23/**4*题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1... 查看详情

9完数求解

题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程 找出1000以内的所有完数。1publicclass_009PerfectCount{23publicstaticvoidmain(String[]args){45print();6}78privatestaticvoidprint(){9System.out.println("1~1000的完整数有: 查看详情

justoj1032:习题6.7完数

...描述一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如,6的因子为1、2、3,而6=1+2+3,因此6是"完数"。编程序找出N之内的所有完数,并按下面格式输出其因子:输入N输出?itsfactorsare???样例输入1000样例输出6itsfactorsare1... 查看详情

java_完数

...个数如果恰好等于除它本身外的因子之和,这个数就称为完数。例如6=1+2+3(6的因子是1,2,3)。现在,你要写一个程序,读入两个正整数n和m(1<=n<m<1000),输出[n,m]范围内所有的完数。 提示:可以写一个函数来判断某... 查看详情

用c语言求1000之内的完数要求输出完数的因子

#include"stdio.h"//判断n是否是完数boolisWanShu(intn)intsum=0,j;for(j=1;j<n;j++)if(0==n%j)sum+=j;if(sum==n)printf("%d是完数,",n);returntrue;elsereturnfalse;//输出整数的n的因子(自身除外)voidprintFactor(intn)inti;printf("%d的因子:",n);for(i=... 查看详情

九度oj题目1060:完数vs盈数

题目1060:完数VS盈数时间限制:1秒内存限制:32兆特殊判题:否提交:6461解决:2426题目描述:一个数如果恰好等于它的各因子(该数本身除外)子和,如:6=3+2+1。则称其为“完数”;若因子之和大于该数,则称其为“盈... 查看详情

java50道经典习题-程序9求完数(代码片段)

题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。1publicclassProg92publicstaticvoidmain(String[]args)3intn=1000;4compNumber(n);56//求完数7privatestaticvoidcompNumber(intn)8System.out.println(n 查看详情

java编程-------------9查找1000以内的完数

...rgs){3/*一个数如果恰好等于它的因子之和,这个数就称为"完数".如:6=1+2+3,编程找出1000以内的所有完数。4*/5for(inti=1;i<1000;i++){//每一个数判断是不是完数6intsum=0;7for(intj=1;j<i;j++){//或者for(intj 查看详情

bailian2686打印完数暴力(代码片段)

2686:打印完数总时间限制:1000ms内存限制:65536kB描述一个数如果恰好等于它的因子之和,这个数就成为“完数”。例如,6的因子为1、2、3,而6=1+2+3,因此6是“完数”。编程序打印出1000之内(包... 查看详情

2-1000之间的完数

题目描述:编写程序显示2-1000之间的说有完数,所谓完数是指,该数的各因子之和正好等于该数本身。代码:#include<stdio.h>intmain()//注释部分用于显示因子//intc=0,temp[500];for(inti=2;i<=1000;i++)intsum&... 查看详情

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

...描述一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如,6的因子为1、2、3,而6=1+2+3,因此6是"完数"。编程序找出N之内的所有完数,并按下面格式输出其因子:输入N输出?itsfactorsare???样例输入1000样例输出6itsfactorsare1... 查看详情

蓝桥杯算法训练algo-1528-2求完数

 算法训练8-2求完数 时间限制:50.0s 内存限制:256.0MB问题描述  如果一个自然数的所有小于自身的因子之和等于该数,则称为完数。设计算法,打印1-9999之间的所有完数。样例输出与上面的样例输入对应的输出。例... 查看详情

js中完数的输出

<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title><scripttype="text/javascript">vararrFactor=[];varl=0;document.write("1000以内的完数有:"+ 查看详情

python进阶练习之——完数(代码片段)

...个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。程序分析将每一对因子加进集合,在这个过程中已经自动去重。最后的结果要求不计算其本身。deffactor(... 查看详情