注意事项:
选择排序不是最优的排序,但是是最简单、易懂的。
参考代码:
#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分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复