1210:因子分解
时间限制: 1000 ms 内存限制: 65536 KB
【题目描述】
输入一个数,输出其素因子分解表达式。
【输入】
输入一个整数 n (2≤n<100)。
【输出】
输出该整数的因子分解表达式。
表达式中各个素数从小到大排列。
如果该整数可以分解出因子a的b次方,当b大于1时,写做 a^b ;当b等于1时,则直接写成a。
【输入样例】
60
【输出样例】
2^2*3*5
【来源】
No
//递推
#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
using namespace std;
int main()
{
int a,b=0,n,i;
scanf("%d",&a);
n=a;
for(i=2;i<=a;i++){
int m=0;
if(n%i==0){
if(b==0) b=1;
else printf("*");
printf("%d",i);
while(n%i==0){n/=i;m++;}
if(m>1) printf("^%d",m);
}
if(i>=n||n==1) break;
}
return 0;
}
//递归
#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
using namespace std;
int s[101];
void f(int x,int y)
{
if(x==0||y>x) return;
else{
while(x%y==0){
x/=y;
s[y]++;
}
f(x,y+1);
}
}
int main()
{
int n;
scanf("%d",&n);
f(n,2);
int bl=0;
for(int i=2;i<=100;i++){
if(bl==1&&s[i]!=0) printf("*");
if(s[i]!=0) bl=1;
if(s[i]==1) printf("%d",i);
else if (s[i]>1) printf("%d^%d",i,s[i]);
}
return 0;
}
宏阳13130884377 发布了72 篇原创文章 · 获赞 2 · 访问量 1832 私信 关注