题意不好理解啊..

以下摘自discuss

已知任意一个大于1的数可以表示成一些素数的乘积,即x=p1^e1*p2^e2……               pn^en (pi 为素数,ei 为对应素数的个数),现给你x的表示,要你求x-1的               表示。

               例:输入:5 1 2 1 则x=5^1*2^1=10,所以x-1=9,9可以表示成:9=3^2               输出:3 2
思路:反复试除
#include <stdio.h>
#include <string.h>
#include <math.h>
const int MAXN = 33333;
int prime[MAXN],num;
bool is[MAXN];
int getPri(){
int i, j, k = 0;
int s, e = (int)(sqrt(MAXN + 0.0) + 1);
memset(is, 1, sizeof(is));
prime[k++] = 2; //2是素数
is[0] = is[1] = false;
for(i = 4; i < MAXN; i += 2) //筛掉偶数
is[i] = false;
for(i = 3; i < e; i += 2){ //i 奇数
if(is[i]){
prime[k++] = i;
for(s = i * 2, j = i * i; j < MAXN; j += s)
is[j] = false;
}
}
for(; i < MAXN; i += 2)
if(is[i])
prime[k++] = i;
return k;
}
void solve(int x){
bool first = true;
for(int i = num - 1; i >= 0; --i){
int cnt = 0;
while( x % prime[i] == 0 ){
cnt++;
x /= prime[i];
}
if( cnt ){
if( first ){
printf("%d %d",prime[i], cnt);
first = false;
}
else
printf(" %d %d",prime[i], cnt);
}
}
printf("\n");
}
int main(){
num = getPri();
int p, e, sum;
while(true){
sum = 1;
while(true){
scanf("%d",&p);
if(p == 0)
return 0;
scanf("%d",&e);
sum *= (int)pow((double)p,e);
if(getchar() == '\n')
break;
}
//printf("sum:%d",sum);
solve(sum - 1);
}
return 0;
}

转载于:https://www.cnblogs.com/lxf90/archive/2011/04/12/2014116.html

POJ 1365 Prime Land相关推荐

  1. (数学)POJ - 1365 Prime Land

    原题链接:http://poj.org/problem?id=1365 题意: 定义:任何一个大于1的自然数N,如果N不为质数,那么N可以唯一分解成有限个质数的乘积N=P1a1P2a2P3a3.... ...

  2. UVA516 POJ1365 LA5533 ZOJ1261 Prime Land【欧拉筛法】

    Everybody in the Prime Land is using a prime base number system. In this system, each positive integ ...

  3. POJ 3126 - Prime Path + Python(BFS)

    ()原题链接: # 原题:POJ 3126 - Prime Path | 眈眈探求 # 解题思路:https://blog.csdn.net/LYHVOYAGE/article/details/182 ...

  4. Poj 1811 Prime Test 素数测试 Miller-Rabin 与 整数的因子分解 Pollard rho

    随机化算法,想尝试自己写一下,最后还是变成了抄代码... 代码参考了:POJ 1811 Prime Test(大素数判断和素因子分解) - kuangbin - 博客园 学习链接: Miller-Ra ...

  5. POJ - 3126 - Prime Path(BFS)

    Prime Path POJ - 3126 题意: 给出两个四位素数 a , b.然后从a开始,每次可以改变四位中的一位数字,变成 c,c 可以接着变,直到变成b为止.要求 c 必须是素数.求变换次数 ...

  6. POJ 1811 Prime Test (Rabin-Miller强伪素数测试 和Pollard-rho 因数分解)

    题目链接 Description Given a big integer number, you are required to find out whether it's a prime numbe ...

  7. poj 2395 prime的递归实现

    题目链接:http://poj.org/problem?id=2395 求最小水桶的大小,每到达一个农村就能把水桶补满. 可见是用生成最小树,求最大边. 关于prime个人感觉用递归实现会少一个for ...

  8. POJ 3518 Prime Gap(素数题)

    [题意简述]:输入一个数,假设这个数是素数就输出0,假设不是素数就输出离它近期的两个素数的差值,叫做Prime Gap. [分析]:这题过得非常险.由于我是打的素数表. 由于最大的素数是1299709 ...

  9. POJ 3126 Prime Path(BFS 数字处理)

    意甲冠军  给你两个4位质数a, b  每次你可以改变a个位数,但仍然需要素数的变化  乞讨a有多少次的能力,至少修改成b 基础的bfs  注意数的处理即可了  出队一个数  然后入队全部能够由这个素 ...

最新文章

  1. 基于自动驾驶车辆的激光雷达与摄像头之间的在线标定算法
  2. 数字加字符串用,隔开
  3. Java系统变量之System.getenv()和System.getProperty()
  4. JavaScript对象的创建总结
  5. C++ primer 第8章 IO库
  6. 研究生图像处理该怎的自学_2020研究生入学资格,中级经济师资格-小嗨视频课堂...
  7. Golang sort 排序
  8. 人工智能学习该读哪些书籍?
  9. 什么样的男人才是最牛的男人
  10. .NET多线程编程(14)——用C#实现蜘蛛/爬虫程序的多线程控制
  11. QEMU,KVM及QEMU-KVM介绍
  12. c语言语法分析常见问题,C语言语法提要与常见错误分析.doc
  13. 离线式echarts模拟百度迁徙的实现
  14. 网络上复制网页文字的方法
  15. 3d显卡2003测试软件,3DMark 2003
  16. android十进制转十六进制算法,十进制转十六进制计算器
  17. H3CNE、H3CSE考试总结
  18. 二十二.基于国民MCU 的COMP模块的比较案例
  19. Mysql8.0.17压缩包安装——超详细简单教程
  20. 问题:EO-1 hyperion影像做 MNF 时报错问题解决

热门文章

  1. 电子商务商品供应链概论
  2. python如何设置画布开始位置_如何设置亚马逊站内广告?亚马逊自动广告手动广告都在什么位置?...
  3. Python 虚拟环境迁移路径后pip报错解决记录
  4. 系统学习机器学习之SVM(二)
  5. Linux 常见命令操作(杀死全部screen)
  6. Hive练习求给出2017年1月的新客数
  7. java json处理入门
  8. openresty入门与配置了解
  9. Kicad快捷键大全
  10. 分享我的Linux开发环境