7-45 找完数(20 分)

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

输入格式:

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

输出格式:

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

输入样例:

2 30

输出样例:

6 = 1 + 2 + 3
28 = 1 + 2 + 4 + 7 + 14
 1 #include <stdio.h>
 2
 3 int isPerfect(int num);
 4 void output(int num);
 5
 6 int main(int argc, char const *argv[])
 7 {
 8     int m, n;
 9     int i;
10     int count = 0;
11
12     scanf("%d %d", &m, &n);
13
14     for ( i = m; i <= n; i++ ) {
15         int num = i;
16         if ( isPerfect( num ) ) {
17             count++;
18             output(num);
19         }
20     }
21     if ( count == 0 ) {
22         printf("None\n");
23     }
24     return 0;
25 }
26
27 int isPerfect(int num)
28 {
29     int nSum = 0;
30     int ret = 0;
31     for ( int i = 1; i < num; i++ ) {
32         if ( num % i == 0 ) {
33             nSum += i;
34         }
35         // 判断一个数是不是完数 要把它所有的因子都加起来
36         if ( nSum == num && i + 1 == num) {
37             ret = 1;
38         }
39     }
40     return ret;
41 }
42
43 void output(int num)
44 {
45     int nSum = 0;
46     printf("%d = ", num);
47     for ( int i = 1; i < num; i++ ) {
48         if ( num % i == 0 ) {
49             nSum += i;
50             printf("%d", i);
51             if ( nSum == num ) {
52                 break;
53             } else {
54                 printf(" + ");
55             }
56         }
57     }
58     printf("\n");
59 }

原文地址:https://www.cnblogs.com/wangtiaoke/p/9316952.html

时间: 2024-10-09 21:08:24

7-45 找完数(20 分)的相关文章

循环-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

习题6-3 使用函数输出指定范围内的完数 (20分)

本题要求实现一个计算整数因子和的简单函数,并利用其实现另一个函数,输出两正整数m和n(0)之间的所有完数.所谓完数就是该数恰好等于除自身外的因子之和.例如:6=1+2+3,其中1.2.3为6的因子. 函数接口定义: int factorsum( int number ); void PrintPN( int m, int n ); 其中函数factorsum须返回int number的因子和:函数PrintPN要逐行输出给定范围[m, n]内每个完数的因子累加形式的分解式,每个完数占一行,格式为

循环-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),中间以空格分隔. 输出格式: 逐行输出给定范围内每个完数的因子累加形式的分解式,每个完数

PTA乙级(1079 延迟的回文数 (20分))

1079 延迟的回文数 (20分) https://pintia.cn/problem-sets/994805260223102976/problems/994805261754023936 1 #include <cstdio> 2 #include <cstring> 3 #include <string> 4 #include <iostream> 5 #include <algorithm> 6 #include <cmath>

浙大版《C语言程序设计(第3版)》题目集 练习4-10 找出最小值 (20 分)

练习4-10 找出最小值 (20 分) 本题要求编写程序,找出给定一系列整数中的最小值. 输入格式: 输入在一行中首先给出一个正整数n,之后是n个整数,其间以空格分隔. 输出格式: 在一行中按照“min = 最小值”的格式输出n个整数中的最小值. 输入样例: 4 -2 -123 100 0 输出样例: min = -123 思路:假设输入的第一个是最小值,如果后面输入的小于最小值,更新最小值. 代码如下: #include <stdio.h> int main() { int n, i, mi

习题6-4 使用函数输出指定范围内的Fibonacci数 (20分)

本题要求实现一个计算Fibonacci数的简单函数,并利用其实现另一个函数,输出两正整数m和n(0)之间的所有Fibonacci数.所谓Fibonacci数列就是满足任一项数字是前两项的和(最开始两项均定义为1)的数列. 函数接口定义: int fib( int n ); void PrintFN( int m, int n ); 其中函数fib须返回第n项Fibonacci数:函数PrintFN要在一行中输出给定范围[m, n]内的所有Fibonacci数,相邻数字间有一个空格,行末不得有多余

码农谷 找出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

题目:一个数如果恰好等于它的因子之和,这个数就称为 &quot;完数 &quot;。例如6=1+2+3.编程&#160;&#160;&#160;&#160; 找出1000以内的所有完数。

题目:一个数如果恰好等于它的因子之和,这个数就称为 "完数 ".例如6=1+2+3.编程     找出1000以内的所有完数. 1 package day11_2; 2 3 public class lianxi09 { 4 public static void main(String[] args) { 5 6 for (int i = 1; i < 1000; i++) { 7 int sum=0; 8 for (int j = 1; j <i; j++) { 9 10

找出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