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

相关推荐
Jasmine_llq16 天前
《P10263 [GESP202403 八级] 公倍数问题》
算法·数论·快速 io 优化·埃氏筛(倍数枚举)·线性遍历求和
旋生万物16 天前
圈道裂痕——用 Python 验证素数分布的螺旋生成论判据
开发语言·python·数论·素数·cci·可计算数学
旋生万物18 天前
素数都排在等角螺线上?用螺旋数论给黎曼猜想画一张“几何画像“(附Python)
python·ai编程·数论·黎曼猜想·素数分布
hansang_IR19 天前
【题解】P4454 [CQOI2018] 破解D-H协议
c++·算法·密码学·数论
铸人23 天前
再论勾股定理成立的条件-24
数学·数论·复数
铸人1 个月前
再论勾股定理成立的条件-19
数学·数论·复数
_Narcissus_1 个月前
常见数论算法笔记
数据结构·c++·算法·高精度·数论·快速幂·质数筛
Yangyihao1 个月前
Re : 从 [ 数据删除 ] 开始的计数
数学·数论·理论·方法·总结·积分·日常·无
铸人1 个月前
再论勾股定理成立的条件-15
数学·数论·复数
铸人1 个月前
再论勾股定理成立的条件-9
数学·几何学·数论·复数