B2138 最大质因子序列 题解

思路

模拟。

  1. 快读。这个就不用多说了。

  2. 判断质数。这个是用于辅助后面得到最大质因数,细节就是为了避免超时,循环上限是 sqrt (x) (头文件记得加 include<cmath>除非你用万能头)。

  3. 最大质因数的获取。从大到小枚举!! 不然一发 MLE 警告。

  4. 主函数没什么好说的了,最好用 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——

posted @ 2022-03-25 07:25  pldzy  阅读(121)  评论(0)    收藏  举报