质数 AcWing 867. 分解质因数 港控/mmm° 2023-09-28 11:33 19阅读 0赞 ## 质数 AcWing 867. 分解质因数 ## ### 原题链接 ### [AcWing 867. 分解质因数][AcWing 867.] ### 算法标签 ### 数学知识 分解质因数 试除法 ### 思路 ### #### 分解质因数 #### 算术基本定理,不考虑排列顺序的情况下,每个正整数都能够以唯一的方式表示成它的质因数的乘积。 n = p 1 a 1 ∗ p 2 a 2 ∗ p 3 a 3 . . . . . p n a n n=p\_1^\{a\_1\} \* p\_2^\{a\_2\} \*p\_3^\{a\_3\}.....p\_n^\{a\_n\} n=p1a1∗p2a2∗p3a3.....pnan #### 暴力 #### 从2~n 找到能整除的因子然后算次方 #### 优化 #### n n n中最多只含有一个大于 s q r t ( n ) sqrt(n) sqrt(n)的因子。 证明通过反证法:如果有两个大于 s q r t ( n ) sqrt(n) sqrt(n)的因子,那么相乘会大于 n n n,矛盾。证毕 于是我们发现最多只有一个大于 s q r t ( n ) sqrt(n) sqrt(n)的因子,对其进行优化。先考虑比 s q r t ( n ) sqrt(n) sqrt(n)小的,代码和质数的判定类似 最后如果 n > 1 n>1 n>1,说明这就是大于 s q r t ( n ) sqrt(n) sqrt(n)的唯一质因子,输出即可。 [主要借鉴该题解][Link 1] ### 代码 ### #include<bits/stdc++.h> #define int long long #define rep(i, a, b) for(int i=a;i<b;++i) #define Rep(i, a, b) for(int i=a;i>b;--i) using namespace std; const int N = 100005; inline int read(){ int s=0,w=1; char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();} while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar(); return s*w; } void put(int x) { if(x<0) putchar('-'),x=-x; if(x>=10) put(x/10); putchar(x%10^48); } void div(int n){ // 如果i只能被1或者自己整除就是质数,否则就不是,又因为他如果能取到i就说明从2到i-1都没有被取到,所以i一定是质数 for(int i=2;i<=n/i;++i){ if(!(n%i)){ int ans=0; while(!(n%i)){ n/=i; ans++; } printf("%lld %lld\n", i, ans); } } if(n>1){ printf("%lld %lld\n", n, 1); } puts(""); } signed main(){ ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int n=read(); while(n--){ int a=read(); div(a); } return 0; } 原创不易 转载请标明出处 如果对你有所帮助 别忘啦点赞支持哈 ![在这里插入图片描述][9cb4cb80a18345158f8a69e2f196e5b9.png] [AcWing 867.]: https://www.acwing.com/problem/content/869/ [Link 1]: https://www.acwing.com/solution/content/9813/ [9cb4cb80a18345158f8a69e2f196e5b9.png]: https://img-blog.csdnimg.cn/9cb4cb80a18345158f8a69e2f196e5b9.png
相关 质数 AcWing 867. 分解质因数 质数 AcWing 867. 分解质因数 原题链接 [AcWing 867. 分解质因数][AcWing 867.] 算法标签 数学知识 分解质因数 试除法 港控/mmm°/ 2023年09月28日 11:33/ 0 赞/ 20 阅读
相关 质因数分解 一道清华的复试题,我先后看了两份代码,收获匪浅,分别摘自下面两个博客: [https://blog.csdn.net/Little\_Kid\_Kang/article/de 深藏阁楼爱情的钟/ 2023年03月14日 05:54/ 0 赞/ 167 阅读
相关 分解质因数 上一篇博客:[质数的筛法][Link 1] > 写在前面:大家好!我是`AC-fun`,我的昵称来自两个单词`Accepted`和`fun`。我是一个热爱ACM的蒟蒻。如果 Love The Way You Lie/ 2022年10月22日 04:12/ 0 赞/ 241 阅读
相关 分解质因数 public class DecomposePrimeFactor \{ public final static int NUM = 154; public static vo Dear 丶/ 2022年09月30日 06:22/ 0 赞/ 236 阅读
相关 分解质因数 问题描述 求出区间\[a,b\]中所有整数的质因数分解。 输入格式 输入两个整数a,b。 输出格式 每行输出一个数的分解,形如k=a1\a2\a3...( 超、凢脫俗/ 2022年08月05日 02:54/ 0 赞/ 280 阅读
相关 分解质因数 题目内容: 每个非素数(合数)都可以写成几个素数(也可称为质数)相乘的形式,这几个素数就都叫做这个合数的质因数。比如,6可以被分解为2x3,而24可以被分解为2x2x2x3。 灰太狼/ 2022年07月03日 18:20/ 0 赞/ 272 阅读
相关 分解质因数 分解质因数 当无法分解是输出“no answer” <table style="font-size:12px; color:rgb(51,51,51); line-heig 淩亂°似流年/ 2022年06月06日 11:42/ 0 赞/ 300 阅读
相关 分解质因数 问题描述 求出区间\[a,b\]中所有整数的质因数分解。 输入格式 输入两个整数a,b。 输出格式 每行输出一个数的分解,形如k=a1\a2\a3...( 电玩女神/ 2022年06月01日 13:52/ 0 赞/ 307 阅读
相关 分解质因数 void solution(int num) { int i = 2; while (num != 1) { i ╰半夏微凉°/ 2022年05月09日 01:46/ 0 赞/ 338 阅读
还没有评论,来说两句吧...