HDU 1406 完数 (数论)

完数

http://acm.hdu.edu.cn/showproblem.php?pid=1406

Time Limit: 2000/1000 MS (Java/Others)

Memory Limit: 65536/32768 K (Java/Others)

Problem Description

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

Input

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

本文URL地址:http://www.bianceng.cn/Programming/sjjg/201410/45516.htm

Output

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

Sample Input

22 55 7

Sample Output

01

注意区间端点问题。。

完整代码:

/*0ms,208KB*/

#include<cstdio>
#include<algorithm>
using namespace std;
const int perfect_number[] = {6, 28, 496, 8128};  

int main()
{
    int t, a, b, i, j;
    scanf("%d", &t);
    while (t--)
    {
        scanf("%d%d", &a, &b);
        if (a > b) swap(a, b);
        for (i = 0; i < 4; ++i)
            if (a <= perfect_number[i]) break;
        for (j = 0; j < 4; ++j)
            if (b < perfect_number[j]) break;///小心!
        printf("%d\n", j - i);
    }
    return 0;
}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索实例
, hdu1716 排序 oj
, 多行
, 数论
, 整数
, 两个
, 个数
, 整数对 acm
一行
hdu 数论、完全数、完全数有哪些、1000以内的完数、完数的算法,以便于您获取更多的相关知识。

时间: 2025-01-27 07:19:17

HDU 1406 完数 (数论)的相关文章

HDOJ(HDU) 1406 完数

Problem Description 完数的定义:如果一个大于1的正整数的所有因子之和等于它的本身,则称这个数是完数,比如6,28都是完数:6=1+2+3:28=1+2+4+7+14. 本题的任务是判断两个正整数之间完数的个数. Input 输入数据包含多行,第一行是一个正整数n,表示测试实例的个数,然后就是n个测试实例,每个实例占一行,由两个正整数num1和num2组成,(1 import java.util.Scanner; public class Main{ public static

如何判断完数然后输出6=1+2+3 28=1+2+4+7+14

#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<math.h> int f(int num){ int index = 0; int sum=0; int a[50]; for (int i = 1; i < num; i++){ if (num%i == 0){ a[index] = i; index++; sum += i; } } //打印数据 //更多精彩内容:http://www.bianceng

c#如何判断一个数是否是完数

完数就是该数的所有约数(能整除自己的自然数,但不包括本身)相加等于自己的数.如28就是一个完数,28=+1+2+4+7+14. 利用下面的算法可以一个数是否为完数,如果为完数输出该数所有的约数,并返回True,否则,返回False.程序代码如下: public bool IsWanShu(int Num){ int s=0; for (int i=1;i<Num;i++) { if((Num%i)==0) s=s+i; } if (Num == s) { string str = s.ToStr

c语言-C语言完数问题,新手求指点~谢谢

问题描述 C语言完数问题,新手求指点~谢谢 C语言课后习题,求1000以内的完数,按以下格式输出: 6 its factors are 1,2,3 为什么我改成和答案一样的都输出空., 代码如下:#include int main() { int m,i,s; for(m=2;m<1000;m++)//2-1000个数 { s=0; for(i=1;i<=m;i++) if((m%i)==0)s=s+i; if(s==m) { printf("%d,its factors are&q

《C语言及程序设计》实践参考——完数

返回:贺老师课程教学链接  项目要求 [项目1-完数]一个数如果恰好等于它的因子之和,这个数就称为"完数".例如6=1+2+3,再如8的因子和是7(即1+2+4),8不是完数.(1)输入一个数n,判断n是否是完数[参考解答] 解1: #include <stdio.h> int main( ) { int n,s,m; printf("输入n:"); scanf("%d", &n); s=1; //s代表因子和.1是任何数的因

求1000以内的完数。并输出。

问题描述 publicclassWanShu{publicstaticvoidmain(String[]args){inti,j,h=0;for(i=1;i<=1000;i++){for(j=1,h=0;j<=i/2;j++){if(i%j==0)h=h+j;}if(h==i)System.out.print("1000以内的完数");System.out.println();System.out.print(i);}}}用java语言编的不知哪错了.运行结果是输出了1~1

第12周 报告1 --- 2-1000内的完数

任务1:(课本p86第20题)一个数如果恰好等于它的因子之和,这个数就称为"完数".例如6=1+2+3,再如8的因子和是7(即1+2+4),8不是完数.编程找出1000以内的所有完数. 本文先给出我做的程序,后面加上对同学们做法的点评. [第一部分 我的报告] 实验目的:学会使用循环控制语句解决实际问题,并强化注重效率的观念 实验内容:用循环控制语句编写程序,完成表达式的计算 /* 程序头部注释开始 * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算

2014秋C++第10周项目5参考-输出完数

课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703,课程资源在云学堂"贺老师课堂"同步展示,使用的帐号请到课程主页中查看.   [项目5:输出完数](课本p86第20题)一个数如果恰好等于它的因子之和,这个数就称为"完数".例如6=1+2+3,再如8的因子和是7(即1+2+4),8不是完数.编程找出1000以内的所有完数.提示:首先从2到1000构造循环控制变量为i的外层循环.每次循环中,利用内

C++第10周项目4参考——完数

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565 [项目4:输出完数](课本p86第20题)一个数如果恰好等于它的因子之和,这个数就称为"完数".例如6=1+2+3,再如8的因子和是7(即1+2+4),8不是完数.编程找出1000以内的所有完数.提示:首先从2到1000构造循环控制变量为i的外层循环.每次循环中,利用内嵌的循环逐个地求出i的因子,并累加起来(为提高效率,可能的因子从1到i/2),如果因子和等于i