1059 Prime Factors (25分)
2024-10-08 10:38:04
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;
}
最新文章
- Combination Sum II
- 使用 Eclipse 插件部署 Java 应用
- java基础十[包、Jar存档文件和部署](阅读Head First Java记录)
- Web API 2 authentication with JWT
- iOS开发中EXC_BAD_ACCESS的另类原因
- (a*b)%c 问题
- bootstrap-js(六)弹出框
- Windows7系统的封装
- 【jQuery】(6)---jQuery validate插件
- 处女作《Web全栈开发进阶之路》出版了!
- [PA2014]Druzyny
- 20. Web proxies (网页代理 4个)
- [CodeForces - 197B] B - Limit
- Android---页面跳转
- 《Lua程序设计》9.1 协同程序基础 学习笔记
- centos7修改默认运行级别的变化
- Go 程序执行顺序
- 【刷题】BZOJ 4825 [Hnoi2017]单旋
- Mac下使用ABTestingGateway快速搭建灰度网关
- windows下好用的markdown编辑器
热门文章
- Easy_language
- [CF1303E] Erase Subsequences - dp
- defender 月考总结
- python3练习100题——054
- (一)Python模块化编程简介
- mysql远程连接失败的两种解决方法
- FZU-Problem 2150 Fire Game(两点bfs)
- 【Unity|C#】基础篇(12)——反射(Reflection)(核心类:Type、Assembly)
- [SNOI2017]炸弹[线段树优化建图]
- shell-删除指定时间前的文件