码迷,mamicode.com
首页 > 其他好文 > 详细

32:完数个数

时间:2020-03-04 12:39:18      阅读:105      评论:0      收藏:0      [点我收藏+]

标签:return   问题   测试   作者   scan   大于   xxx   void   等于   

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:完数个数

标签:return   问题   测试   作者   scan   大于   xxx   void   等于   

原文地址:https://www.cnblogs.com/VictorierJwr/p/12408706.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!