UVA 10392--Factoring Large Numbers
来源:互联网 发布:数据库并发保证一致性 编辑:程序博客网 时间:2024/05/17 23:10
题目概述:整数分解问题
思路分析:任何一个数n都可以写成n=p1^a1*p2^a2*...*pm^am(其中p1,p2,..,pm为n的素因子)
方法一:
把所有可能的因数拿来试除,注意一个合数n的最大素因子不会超过sqrt(n)(除了n本身外);
#include<stdio.h>#include<math.h>void f(long long n){ for(long long i=2;i<=(int)sqrt(n+0.5);i++){ while(n%i==0){ n=n/i; for(int j=0;j<4;j++) printf(" "); printf("%lld\n",i); } } if(n>1){ for(int i=0;i<4;i++) printf(" "); printf("%lld\n",n); }}int main(){ long long n; while(scanf("%lld",&n)==1){ if(n<0) break; f(n); printf("\n"); } return 0;}方法二:
先建立素数表,再用输入的数对素数表依次试除;
这里建立的素数表使用了线性筛选法,关键的思想是每个合数必有一个最小素因子,保证每个合数都是被它的的最小素因子筛去,并只筛依一次,防止合数重复访问。
#include<stdio.h>#include<math.h>#include<string.h>const int maxn=1000000;int prime[maxn/3];int flag[maxn];int cnt;void Prime(){ cnt=0; memset(flag,0,sizeof(flag)); flag[0]=1; flag[1]=1; for(int i=2;i<maxn;i++){ if(!flag[i]) prime[cnt++]=i; for(int j=0;i*prime[j]<maxn;j++){ flag[i*prime[j]]=1; if(i%prime[j]==0) break; } }}void f(long long n){ for(int i=0;i<cnt;i++){ if(n==1||n<prime[i]) break; while(n%prime[i]==0){ n/=prime[i]; printf(" %d\n",prime[i]); } } if(n>1) printf(" %lld\n",n);}int main(){ Prime(); long long n; while(scanf("%lld",&n)==1){ if(n<0) break; f(n); printf("\n"); } return 0;}
0 0
- UVa 10392 Factoring Large Numbers
- uva 10392 Factoring Large Numbers
- uva 10392 - Factoring Large Numbers
- UVa 10392 - Factoring Large Numbers
- uva 10392 - Factoring Large Numbers
- uva-10392 - Factoring Large Numbers
- UVa 10392 - Factoring Large Numbers
- Uva 10392 - Factoring Large Numbers
- UVa 10392 - Factoring Large Numbers
- UVa 10392 - Factoring Large Numbers
- UVA 10392 Factoring Large Numbers
- UVa 10392: Factoring Large Numbers
- uva 10392 - Factoring Large Numbers
- uva 10392 Factoring Large Numbers
- UVa 10392 - Factoring Large Numbers
- UVa 10392 - Factoring Large Numbers
- Uva 10392 Factoring Large Numbers
- UVA - 10392 Factoring Large Numbers
- 虛庵 鄭希良
- 重构笔记——以查询取代临时变量
- ios 数据持久化之magical record(基于coredata)
- UVA 10879--Code Refactoring
- Mac设置显示和隐藏【隐藏文件】
- UVA 10392--Factoring Large Numbers
- 韩顺平php视频笔记45 循环相关语句break,continue常量
- java中文乱码解决之道(一)-----认识字符集
- jsp开发基础知识
- STL源码剖析---空间配置器
- XML —— DTD介绍
- 用Python给小宝做的数学四则运算_算术口算练习程序(后添加减乘除)
- oc-NSData与其他数据类型之间转换
- 公元2015年1月4日,新的一年,第一天上班!~