裸的素因子分解==
2015-08-02 10:17
309 查看
Description
假设x是一个正整数,它的值不超过65535(即1<x<=65535),请编写一个程序,将x分解为若干个素数的乘积。
Input
输入的第一行含一个正整数k (1<=k<=10),表示测试例的个数,后面紧接着k行,每行对应一个测试例,包含一个正整数x。
Output
每个测试例对应一行输出,输出x的素数乘积表示式,式中的素数从小到大排列,两个素数之间用“*”表示乘法。
Sample Input
2119828
Sample Output
112*2*3*3*3*7*13
假设x是一个正整数,它的值不超过65535(即1<x<=65535),请编写一个程序,将x分解为若干个素数的乘积。
Input
输入的第一行含一个正整数k (1<=k<=10),表示测试例的个数,后面紧接着k行,每行对应一个测试例,包含一个正整数x。
Output
每个测试例对应一行输出,输出x的素数乘积表示式,式中的素数从小到大排列,两个素数之间用“*”表示乘法。
Sample Input
2119828
Sample Output
112*2*3*3*3*7*13
#include <iostream> #include<cstdio> #include<cstring> using namespace std; #define maxn 200000 int fac[maxn]; int num[maxn]; int cnt; void fenjie(int n) { cnt=0; memset(num,0,sizeof(num)); for(int i=2;i*i<n;i++) { if(n%i==0) { fac[cnt]=i; while(n%i==0) num[cnt]++,n/=i; cnt++; } } if(n>1) fac[cnt]=n,num[cnt++]=1; } int main() { int n,t; while(~scanf("%d",&t)) { while(t--) { scanf("%d",&n); fenjie(n); printf("%d",fac[0]); for(int i=0;i<=cnt;i++) { if(i==0) num[i]--; for(int j=0;j<num[i];j++){ if(fac[i]) printf("*%d",fac[i]); } } printf("\n"); } } return 0; }
相关文章推荐
- Android中ContentProvider详解例程
- Log4J使用笔记
- 重学C++ (一)
- IBM AppScan官方帮助文档错别字缺陷,IBM的测试人员也太粗心了吧
- 归并排序(分治)
- POJ 1061青蛙的约会
- Hibernate学习(6)缓存管理
- [Ubuntu]明明白白安装中文字体
- windows安装redis
- Unknown system variable 'language'
- synchronized 与 Lock 对比
- HDU 3452 Bonsai(最小割)
- 利用递归法和pygame实现迷宫寻路的动态展示_Prj002
- Ubuntu 所需要的中文字体美化操作步骤
- hdu 1569 方格取数(2) 最大点权独立集
- Test
- git 撤销commit
- linux下echo命令
- Activity的四种启动模式和onNewIntent()
- 字符编码