B2138 最大质因子序列 题解
思路
模拟。
-
快读。这个就不用多说了。
-
判断质数。这个是用于辅助后面得到最大质因数,细节就是为了避免超时,循环上限是
sqrt (x)(头文件记得加include<cmath>,除非你用万能头)。 -
最大质因数的获取。从大到小枚举!! 不然一发 MLE 警告。
-
主函数没什么好说的了,最好用
printf,避免超时。
Code
#include<bits/stdc++.h>
using namespace std;
int read (){
int s = 0, x = 1;
char ch = getchar ();
while (ch < '0' or ch > '9'){if (ch == '-') x = -1; ch = getchar ();}
while (ch >= '0' and ch <= '9'){s = s * 10 + ch - '0'; ch = getchar ();}
return s * x;
}
bool pr (int x){
for (int i = 2; i <= sqrt (x); i++) if (x % i == 0) return 0;
return 1;
}
int pd (int x){
if (pr (x)) return x;
for (int i = x - 1; i >= 2; i--){
if (!pr (i)) continue;
if (x % i == 0) return i;
}
}
int n, m;
int main (){
n = read (), m = read ();
for (int i = n; i < m; i++)printf ("%d,",pd (i));
printf ("%d\n", pd (m));
return 0;
}
—— E n d End End——

浙公网安备 33010602011771号