32:完数个数

Posted Victorier

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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("\n");
}
num = 0;
}
return 0;
}
···

以上是关于32:完数个数的主要内容,如果未能解决你的问题,请参考以下文章

打卡5.9——求某一范围内完数的个数

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

C语言试题112之一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如 6=1+2+3.编程 找出 1000 以内的所有完数。

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

一个数如果恰好等于它的因子之和,这个数就称为“完数”例如,6的因子为1,2,3,而6=1+2+3,因此6是“完数”。编程序找出1000之内的所有完数,并按下面格式输出其因子:

第9题一个数如果恰好等于它的因子之和,这个数就称为 完数