1059 Prime Factors (25分)

1. 题目

2. 思路

先求解出int范围内的所有素数,把输入x分别对素数表中素数取余,判断是否为0,如果为0继续除该素数知道余数不是0,遍历到sqrt(x)就够了

3. 注意点

输入数为1的情况, 输出1=1

4. 代码

#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std; #define MAXN 100000 // 长度10够用的,前10个素数的乘积已经超过int了
struct fra{
int x;
int n;
}f[10]; void show(fra a[], int size, int x){
printf("%d=", x);
int i = 0;
for(i=0;i<size-1;i++){
if(a[i].n == 1){
printf("%d*", a[i].x);
}else{
printf("%d^%d*", a[i].x, a[i].n);
}
}
if(a[i].n == 1){
printf("%d", a[i].x);
}else{
printf("%d^%d", a[i].x, a[i].n);
}
} bool isPrime[MAXN];
int prime[MAXN]; void init(){
int count = 0;
for(int i=2;i<=MAXN;i++){
if(isPrime[i] == false){
prime[count++] = i;
for(int j=i+i;j<MAXN;j+=i){
isPrime[j] = true;
}
}
}
} int main(){
int x;
init();
scanf("%d", &x);
int x_copy = x;
if(x == 1){
printf("1=1");
return 0;
}
int count = 0;
int sqr = sqrt(x);
for(int i=0;i<sqr;i++){
if(x % prime[i] == 0){
f[count].x = prime[i];
f[count].n = 1;
x/=prime[i];
while(x % prime[i] == 0){
f[count].n++;
x/=prime[i];
}
count++;
}
if(x == 1){
break;
}
}
if(x != 1){
f[count].x = x;
f[count].n = 1;
count++;
}
show(f, count, x_copy);
return 0;
}

最新文章

  1. Combination Sum II
  2. 使用 Eclipse 插件部署 Java 应用
  3. java基础十[包、Jar存档文件和部署](阅读Head First Java记录)
  4. Web API 2 authentication with JWT
  5. iOS开发中EXC_BAD_ACCESS的另类原因
  6. (a*b)%c 问题
  7. bootstrap-js(六)弹出框
  8. Windows7系统的封装
  9. 【jQuery】(6)---jQuery validate插件
  10. 处女作《Web全栈开发进阶之路》出版了!
  11. [PA2014]Druzyny
  12. 20. Web proxies (网页代理 4个)
  13. [CodeForces - 197B] B - Limit
  14. Android---页面跳转
  15. 《Lua程序设计》9.1 协同程序基础 学习笔记
  16. centos7修改默认运行级别的变化
  17. Go 程序执行顺序
  18. 【刷题】BZOJ 4825 [Hnoi2017]单旋
  19. Mac下使用ABTestingGateway快速搭建灰度网关
  20. windows下好用的markdown编辑器

热门文章

  1. Easy_language
  2. [CF1303E] Erase Subsequences - dp
  3. defender 月考总结
  4. python3练习100题——054
  5. (一)Python模块化编程简介
  6. mysql远程连接失败的两种解决方法
  7. FZU-Problem 2150 Fire Game(两点bfs)
  8. 【Unity|C#】基础篇(12)——反射(Reflection)(核心类:Type、Assembly)
  9. [SNOI2017]炸弹[线段树优化建图]
  10. shell-删除指定时间前的文件