循环-23. 找完数

循环-23. 找完数(20)

时间限制

100 ms

内存限制

65536 kB

代码长度限制

8000 B

判题程序

Standard

作者

陈建海(浙江大学)

来源

ZOJ

所谓完数就是该数恰好等于除自身外的因子之和。例如:6=1+2+3,其中1、2、3为6的因子。本题要求编写程序,找出任意两正整数m和n之间的所有完数。

输入格式:

输入在一行中给出2个正整数m和n(0<m<=n<=10000),中间以空格分隔。

输出格式:

逐行输出给定范围内每个完数的因子累加形式的分解式,每个完数占一行,格式为“完数 = 因子1 + 因子2 + ... + 因子k”,其中完数和因子均按递增顺序给出。

输入样例:

1 30

输出样例:

1 = 1
6 = 1 + 2 + 3
28 = 1 + 2 + 4 + 7 + 14
 1 #include<stdio.h>
 2 #include<math.h>
 3 #include<stdlib.h>
 4 #include<string.h>
 5 int main()
 6 {
 7     int n, m, i, j, sum;
 8     scanf("%d%d", &n, &m);
 9     int flag[m+1];
10     flag[1] = 1;
11     for(i = 2; i <= m+1; i++)
12         flag[i] = 0;
13     for(i = n; i <= m; i++)
14     {
15         sum = 1;
16         for(j = 2; j <= sqrt(i); j++)
17         {
18             if(i%j == 0)
19                 sum = sum + j + i / j;
20         }
21         if(sum == i)
22             flag[i] = 1;
23     }
24     for(i = n; i <= m; i++)
25     {
26         if(flag[i])
27         {
28             printf("%d = 1", i);
29             for(j = 2; j < i; j++)
30                 if(i%j == 0)
31                     printf(" + %d", j);
32             printf("\n");
33         }
34     }
35     return 0;
36 }
时间: 2024-10-20 23:00:23

循环-23. 找完数的相关文章

循环-23. 找完数(20)

所谓完数就是该数恰好等于除自身外的因子之和.例如:6=1+2+3,其中1.2.3为6的因子.本题要求编写程序,找出任意两正整数m和n之间的所有完数. 输入格式: 输入在一行中给出2个正整数m和n(0<m<=n<=10000),中间以空格分隔. 输出格式: 逐行输出给定范围内每个完数的因子累加形式的分解式,每个完数占一行,格式为“完数 = 因子1 + 因子2 + ... + 因子k”,其中完数和因子均按递增顺序给出. 输入样例: 1 30 输出样例: 1 = 1 6 = 1 + 2 + 3

7-45 找完数(20 分)

所谓完数就是该数恰好等于除自身外的因子之和.例如:6=1+2+3,其中1.2.3为6的因子.本题要求编写程序,找出任意两正整数m和n之间的所有完数. 输入格式: 输入在一行中给出2个正整数m和n(1<m≤n≤10000),中间以空格分隔. 输出格式: 逐行输出给定范围内每个完数的因子累加形式的分解式,每个完数占一行,格式为"完数 = 因子1 + 因子2 + ... + 因子k",其中完数和因子均按递增顺序给出.若区间内没有完数,则输出"None". 输入样例:

rwkj 1303 完数

#include <stdio.h>int main(){ int n,i,j,s,k,a[10000]; scanf("%d",&n); { s=0; k=0; for (j=1;j<n;j++) if (n%j==0) {s+=j;a[k++]=j; } if(s==n) for(i=0;i<k;i++) printf("%d ",a[i]); else printf("no\n"); } return 0;}

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) 输出说明 : 对于每组测试数据,请输

C++实现 找出10000以内的完数

C++实现 找出10000以内的完数 #include <stdio.h> int main(){ int n; // 用户输入的整数 int i; // 循环标志 printf("输入一个整数:"); scanf("%d",&n); printf("%d=",n); // n>=2才执行下面的循环 for(i=2; i<=n; i++){ while(n!=i){ if(n%i==0){ printf("

找出1000以内的所有完数

题目:一个数如果恰好等于它的因子之和,这个数就称为 "完数 ".例如6=1+2+3.编程 找出1000以内的所有完数. 1 package com.li.FiftyAlgorthm; 2 3 /** 4 * 题目:一个数如果恰好等于它的因子之和,这个数就称为 "完数 ".例如6=1+2+3.编程 找出1000以内的所有完数. 5 * 6 * @author yejin 7 * 8 */ 9 public class Wanshu { 10 public static

码农谷 找出N之内的所有完数

题目描述 一个数如果恰好等于它的因子之和,这个数就称为"完数". 例如,6的因子为1.2.3,而6=1+2+3,因此6是"完数". 编程序找出N之内的所有完数,并按下面格式输出其因子. 输入描述 N 输出描述 ? its factors are ? ? ? 样例 输入: 1000 输出: 6 its factors are 1 2 3 28 its factors are 1 2 4 7 14 496 its factors are 1 2 4 8 16 31 62

【Java】编程找出1000以内的所有完数。

1 package com.xt.homework.hw09; 2 /** 3 * 5. 一个正整数,如果恰好等于除它本身外的所有因子之和,这个数就称为"完数". 4 * 例如6=1+2+3,编程找出1000以内的所有完数. 5 * 6 * 7 * @author 天耀二期 8 * 杨勃隆 9 */ 10 public class HomeWork05 { 11 public static void main(String[] args){ 12 { 13 int i,j,k; 14

一个数如果恰好等于不包含它本身所有因子之和,这个数就称为&quot;完数&quot;。 例如,6的因子为1、2、3,而6=1+2+3,因此6是&quot;完数&quot;。 编程序找出N之内的所有完数,并按下面格式输出其因子

问题 1017: [编程入门]完数的判断 时间限制: 1Sec 内存限制: 128MB 提交: 9159 解决: 4243 题目描述 一个数如果恰好等于不包含它本身所有因子之和,这个数就称为"完数". 例如,6的因子为1.2.3,而6=1+2+3,因此6是"完数". 编程序找出N之内的所有完数,并按下面格式输出其因子 输入 N 输出 ? its factors are ? ? ? 样例输入 1000 样例输出 6 its factors are 1 2 3 28 i