• 习题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要逐行输出给定范围[mn]内每个完数的因子累加形式的分解式,每个完数占一行,格式为“完数 = 因子1 + 因子2 + ... + 因子k”,其中完数和因子均按递增顺序给出。如果给定区间内没有完数,则输出一行“No perfect number”。

    输入样例1:

    6 30
    

    输出样例1:

    1. 6 is a perfect number
    2. 6 = 1 + 2 + 3
    3. 28 = 1 + 2 + 4 + 7 + 14

    输入样例2:

    7 25
    

    输出样例2:

    No perfect number
    1. #include
    2. int factorsum( int number );
    3. void PrintPN( int m, int n );
    4. int main()
    5. {
    6. int m, n;
    7. scanf("%d %d", &m, &n);
    8. if ( factorsum(m) == m ) printf("%d is a perfect number\n", m);
    9. if ( factorsum(n) == n ) printf("%d is a perfect number\n", n);
    10. PrintPN(m, n);
    11. return 0;
    12. }
    13. int factorsum( int number ){
    14. if(number==1){
    15. return 0;//1做一下特殊处理;
    16. }
    17. int sum=1;
    18. for(int i=2;i
    19. if(number%i==0){
    20. sum+=i;
    21. }
    22. }
    23. return sum;
    24. }
    25. void PrintPN( int m, int n ){
    26. int j,flag=0;
    27. for(int i=m;i<=n;i++){
    28. if(factorsum(i)==i){
    29. flag=1; //进入程序之后,说明是完数,做个标记,让下方判断不是完数时输出更捷;
    30. printf("%d = 1",i);
    31. for( j=2;j
    32. if(i%j==0){
    33. printf(" + %d",j);//为了适应题目给的示例,做的两个输出;
    34. }
    35. }
    36. }
    37. if(j==i){
    38. printf("\n");//当含有j的for循环结束时换行;
    39. }
    40. }
    41. if(flag==0){
    42. printf("No perfect number");
    43. }
    44. }
  • 相关阅读:
    文件上传漏洞
    程序员的护城河:从代码到智慧的跨越
    2000-2023年省市县人工智能企业数量数据
    .NET 8发布首个RC,比.NET 7的超级快更快
    神经网络参数量和计算量,神经网络参数个数计算
    Camera1 源码解析系列(二)—— Camera1 Open() 流程解析
    Maven 的常用命令
    无代码开发平台子管理员入门教程
    ZEMAX | 绘图分辨率结果对光线追迹的影响
    linux平常总结
  • 原文地址:https://blog.csdn.net/zxn275266/article/details/128173574