输出指定范围内的完数
生活随笔
收集整理的這篇文章主要介紹了
输出指定范围内的完数
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
題目要求
本題要求實現(xiàn)一個計算整數(shù)因子和的簡單函數(shù),并利用其實現(xiàn)另一個函數(shù),輸出兩正整數(shù)m和n(0<m≤n≤10000)之間的所有完數(shù)。所謂完數(shù)就是該數(shù)恰好等于除自身外的因子之和。例如:6=1+2+3,其中1、2、3為6的因子。
函數(shù)接口定義:
int factorsum( int number );
void PrintPN( int m, int n );
其中函數(shù)factorsum須返回int number的因子和;
函數(shù)PrintPN要逐行輸出給定范圍[m, n]內(nèi)每個完數(shù)的因子累加形式的分解式,每個完數(shù)占一行,格式為“完數(shù) = 因子1 + 因子2 + … + 因子k”,其中完數(shù)和因子均按遞增順序給出。
如果給定區(qū)間內(nèi)沒有完數(shù),則輸出一行“No perfect number”。
代碼
注意格式的處理
#include <stdio.h>int factorsum( int number ); void PrintPN( int m, int n ); int factorsum( int number ){int k=0;for(int i=1;i<number;++i){if(number%i==0) k+=i;} return k; } void PrintPN( int m, int n ){int s=0;for(int i=m;i<=n;++i){if(factorsum(i)==i){//完數(shù) s++;//記錄完數(shù)個數(shù) printf("%d = 1",i);//前幾個輸出,1一定是因數(shù) for(int j=2;j<i;++j){if(i%j==0) printf(" + %d",j);//輸出后面的因數(shù) }printf("\n");}}if(s==0) printf("No perfect number"); } int main() {int m, n;scanf("%d %d", &m, &n);if ( factorsum(m) == m ) printf("%d is a perfect number\n", m);if ( factorsum(n) == n ) printf("%d is a perfect number\n", n);PrintPN(m, n);return 0; }/* 你的代碼將被嵌在這里 */總結(jié)
以上是生活随笔為你收集整理的输出指定范围内的完数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 树莓派配置
- 下一篇: 单片机实验:外部中断按键