注意事项:

选择排序不是最优的排序,但是是最简单、易懂的。

参考代码:

#include<stdio.h>

//交换

void swap(int &a,int &b){

    int count;

    count = a;

    a = b;

    b = count;

}

//选择排序

void selectsort(int a[],int len){

    for(int i = 0;i < len;i++){

        for(int j = i;j < len;j++){

            if(a[i] > a[j]){

                swap(a[i],a[j]);

            }

        }

    }

}

//分解因子

void factor(int num){

    int factor[1000],m = 0,sum = 0;

    for(int i = 2;i*i <= num;i++){

        if(num % i == 0){

            factor[m++] = i;

            factor[m++] = num/i;

            sum += i+num/i;

        }

}

        if(sum+1 == num){

            selectsort(factor,m);

        printf("%d its factors are 1 ",num);

        for(int j = 0;j < m;j++){

            printf("%d ",factor[j]);

        }printf("\n");

        }

    }

int main(){

    int num,i,sum=0;

    scanf("%d",&num);

    if(num <= 0){

        printf("? its factors are ? ? ?");

        return 0;

    }//范围内数字:

    for(i = 2;i <= num;i++){

        factor(i);

    }

return 0;

}

(代码仅个人想法,非最优解)

点赞(0)
 

0.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论