B3716 分解质因子 3

复制代码
#include <bitset>
#include <vector>
#include <iostream>
#include <algorithm>

const int maxn = 100000008;

std::vector<int> prm, pre;  // pre is the min-factor array.
bool np[maxn];

void getPrime(const int N = 100000000) {//线性筛!
  pre.resize(N + 1);
  for (int i = 2; i <= N; ++i) {
    if (!np[i]) {
      prm.push_back(i); pre[i] = i;
    }
    for (auto p : prm) if (i * p <= N) {
      int k = i * p;
      np[k] = true;
      pre[k] = p;
      if (i % p == 0) break;
    } else break;
  }
}

int main() {
  std::ios::sync_with_stdio(false);
  std::cin.tie(nullptr);
  getPrime();
  int T, n;
  for (std::cin >> T; T; --T) {
    std::cin >> n;
    int ans = 0;
    while (n != 1) {
      ans ^= pre[n];
      n /= pre[n];
    }
    std::cout << ans << '\n';
  }
}

okk

相关推荐
_OP_CHEN2 天前
【算法基础篇】(四十)数论之算术基本定理深度剖析:从唯一分解到阶乘分解
c++·算法·蓝桥杯·数论·质因数分解·acm/icpc·算数基本定理
_OP_CHEN3 天前
【算法基础篇】(三十八)数论之最大公约数与最小公倍数 —— 从原理到实战
蓝桥杯·数论·最大公约数·最小公倍数·欧几里得算法·acm/icpc·秦九韶算法
xu_yule6 天前
算法基础(数学)—数论
c++·算法·数论·最大公约数和最小公倍数·质数的判定·筛质数
君义_noip10 天前
信息学奥赛一本通 1616:A 的 B 次方
数论·信息学奥赛·csp-s
君义_noip11 天前
信息学奥赛一本通 1618:越狱 | 洛谷 P3197 [HNOI2008] 越狱
数论·信息学奥赛·csp-s
君义_noip17 天前
洛谷 P4777 【模板】扩展中国剩余定理(EXCRT)
算法·数论·信息学奥赛·csp-s
君义_noip18 天前
信息学奥赛一本通 1640:C Looooops
c语言·数论·信息学奥赛·csp-s
ComputerInBook1 个月前
理解数学概念——素数(质数)(prime)
算法·数论·质数·素数
让我们一起加油好吗2 个月前
【数论】裴蜀定理与扩展欧几里得算法 (exgcd)
算法·数论·裴蜀定理·扩展欧几里得算法·逆元
让我们一起加油好吗2 个月前
【数论】乘法逆元(求逆元的三种方式)
算法·数论·费马小定理·扩展欧几里得算法·乘法逆元