求c++最小因子且降序排列
#include<iostream>using namespace std;
void bubble_sort(int arr[], int len) {
int i, j, temp;
for (i = 0; i < len - 1; i++)
for (j = 0; j < len - 1 - i; j++)
if (arr > arr) {
temp = arr;
arr = arr;
arr = temp;}}
class Stackofintegers
{
public:
typedef struct
{
int elements;
int size;//栈顶指针
}SqStack;
SqStack A;
Stackofintegers()
{}
bool empty(SqStack A)
{
if(A.size==-1)
return true;
else
return false;
}
int peek(SqStack &A)
{
return A.elements;
}
bool Push(SqStack &A,int item)
{
if(A.size==99)
return false;//栈满报错
A.size=A.size+1;
A.elements=item;
return true;
}
int pop(SqStack &A)
{
return A.elements;
}
int getSize(SqStack &A)
{
return (A.size+1);
}
};
int main()
{ int item;
int n;
cout<<"需要分解的数为:"<<endl;
cin>>n;
Stackofintegers a;
a.A.size=-1;
for(int i=2;i*i<=n;i++) {
while(n%i==0) {
a.Push(a.A,i);
n /= i;
}}
bubble_sort(a.A.elements, a.A.size);
for(int i=0;i<a.A.size;i++)
cout<<a.A.elements;
return 0;
}
编写一个程序,接收用户输入的正整数,并按降序显示其所有最小因子。例如,如果整数为120,则最小因子显示为5、3、2、2、2
求解为什么输出结果不正确。 本帖最后由 jackz007 于 2022-10-7 16:05 编辑
#include <stdio.h>
void foo(int k , int i)
{
if(i * i < k + 1) {
for(; i * i < k + 1 ; i ++) {
if(! (k % i)) {
foo(k / i , i) ;
printf(",%d" , i) ;
break ;
}
}
} else printf("%d" , k) ;
}
int main(void)
{
intm ;
printf("输入整数 : ") ;
scanf("%d" , & m) ;
foo(m , 2) ;
}
编译、运行实况:
D:\\C>g++ -o x x.c
D:\\C>x
输入整数 : 120
5,3,2,2,2
D:\\C>
页:
[1]