• 32:完数个数


    32 完数个数

    作者: xxx时间限制: 1S章节: 循环

    问题描述 :
    完数的定义:如果一个大于1的正整数的所有真因子(不包括自己的那些因子)之和等于它的本身,则称这个数是完数,比如6,28都是完数:6=1+2+3;28=1+2+4+7+14。
    本题的任务是判断两个正整数之间完数的个数。

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

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

    输入范例 :
    3
    2 9999
    4305 4135
    5186 91

    输出范例 :
    4
    0
    1

    代码:
    ···

    include <stdio.h>

    void conum(int st[],int n)
    {
    int sum = 0;
    int top = -1;
    for (int i = 1; i < n; i++)
    {
    for (int j = 1; j < i; j++)
    {
    if (i%j == 0)
    {
    sum += j;
    }
    }
    if (sum == i)
    {
    top++;
    st[top] = i;
    }
    sum = 0;
    }
    }
    int main()
    {
    int n, num1, num2, num = 0;
    int st[10] = { 0 };
    conum(st,10000);
    scanf("%d", &n);
    for (int i = 0; i < n; i++)
    {
    scanf("%d%d", &num1, &num2);
    if (num1>num2)
    {
    int temp = num1;
    num1 = num2;
    num2 = temp;
    }
    for (int j = 0; j < 10; j++)
    {
    if (st[j] >= num1&&st[j] <= num2&&st[j] != 0)
    {
    num++;
    }
    }
    printf("%d", num);
    if (i < n - 1)
    {
    printf(" ");
    }
    num = 0;
    }
    return 0;
    }
    ···

    Yesterday is history,tomorrow ismystery,but today is a gift!That why it is called Present!
  • 相关阅读:
    最大流之dinic
    HDU 2485
    最小费用最大流
    HDU 1533
    HDU 1402
    HDU 1498
    HDU 1281
    Codeforces 283E Cow Tennis Tournament 线段树 (看题解)
    Codeforces 983E NN country 思维 (看题解)
    Codeforces 494D Birthday 树形dp (看题解)
  • 原文地址:https://www.cnblogs.com/VictorierJwr/p/12408706.html
Copyright © 2020-2023  润新知