fzu1075(数论入门)
2015-08-02 10:13
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<memory.h> using namespace std; bool p[65545]; int su[65545],k=0,num[65545],yz[65545]; void get() { memset(p,1,sizeof(p)); for(long long i=2;i<=65545;i++) { if(p[i]==1) { su[k++]=i; for(long long j=i*i;j<=65545;j+=i) p[j]=0; } } } int get1(int m) { memset(yz,0,sizeof(yz)); memset(num,0,sizeof(num)); int x=0; for(int i=0;su[i]*su[i]<=m&&i<k;i++) { if(m%su[i]==0) { // cout<<su[i]<<endl; yz[x]=su[i]; while(m%su[i]==0) num[x]++,m/=su[i]; x++; } } if(m>1)yz[x]=m,num[x++]=1; return x; } int main() { get(); //for(int i=0;i<100;i++) // cout<<su[i]<<' '; int n; cin>>n; for(int i=0;i<n;i++) { int m; cin>>m; int o=get1(m); /*for(int j=0;j<o;j++) cout<<"yinzi: "<<yz[j]<<" geshu: "<<num[j]<<endl;*/ cout<<yz[0]; for(int i=0;i<o;i++) { if(i!=0) for(int j=0;j<num[i];j++) cout<<'*'<<yz[i]; else for(int j=1;j<num[i];j++) cout<<'*'<<yz[i]; } cout<<endl; } return 0; }
相关文章推荐
- 速成 IRC 使用者
- hdu 4355 Party All the Time 典型三分
- bean、dao、util、servlet分页操作
- (6) HttpServletResponse
- Android DatePicker日期选择器、TimePicker时间选择器的使用
- Yaf 结合用户自定义的视图(模板)引擎Smarty(Yaf + Smarty)
- leetcode94 inorderTraversal中序遍历的三种实现
- BFS和DFS记录路径
- CTime 和CString的互相转换
- HDU 1795 The least one【二分】
- 浅析Android Camera开发中的三个尺寸和三种变形 (贡献一个自适配Picturesize和Previewsize的工具类)
- Hibernate学习(5)数据查询
- 计票统计
- Android ListView工作原理完全解析
- centos下安装memcached
- HDU 3516 DP 四边形不等式优化 Tree Construction
- Java 基础
- 二进制枚举(容斥原理)
- Steps
- 黑马程序员——java中面向对象基础