博客
关于我
牛牛的k合因子数
阅读量:558 次
发布时间:2019-03-09

本文共 966 字,大约阅读时间需要 3 分钟。

这篇文章详细解释了如何解决“k合因子数”问题。首先,我们需要生成一个数组a,其中a[i]表示i是否为合数。如果a[i]为0,则i是素数;否则,i是合数。接下来,我们遍历每个数i,然后对于i的每个倍数j,检查j是否为合数。如果j不是素数,那么i是j的一个因子。然后,检查i是否是素数。如果i不是素数,那么i是合数因子;如果i是素数,那么i不会被计入合数因子数。最后,统计每个k对应的合数因子数的出现次数。根据输入的m个k值,输出对应的合数因子数的个数。

代码解析

#include 
#include
using namespace std;int main() { cin >> n >> m; vector
a(n + 1, 0); for (int i = 2; i <= n; ++i) { for (int j = i * i; j <= n; j += i) { if (a[j] == 0 || a[i] != 0) { a[j] += 1; } } } vector
b(n + 1, 0); for (int i = 0; i <= n; ++i) { if (a[i] > 0) { b[a[i]]++; } } for (int _ = 0; _ < m; ++_) { int k; cin >> k; cout << b[k] << endl; }}

代码解释

  • 输入处理:首先读取输入的n和m,分别表示范围和查询次数。
  • 生成合数数组a:初始化一个长度为n+1的数组a,初始值为0。通过双重循环标记合数:对于每个数i,标记其平方及更大的倍数j为合数。
  • 统计合数因子数:统计每个数的合数因子数。对于每个数i,遍历其倍数j,如果j是合数且i是合数,则计数。
  • 统计结果:根据合数因子数统计结果,回答每个查询。
  • 输出:输出每个k对应的合数因子数的个数。
  • 转载地址:http://ayoiz.baihongyu.com/

    你可能感兴趣的文章
    MySQL之SQL语句优化步骤
    查看>>
    MYSQL之union和order by分析([Err] 1221 - Incorrect usage of UNION and ORDER BY)
    查看>>
    Mysql之主从复制
    查看>>
    MySQL之函数
    查看>>
    mysql之分组查询GROUP BY,HAVING
    查看>>
    mysql之分页查询
    查看>>
    Mysql之备份与恢复
    查看>>
    mysql之子查询
    查看>>
    MySQL之字符串函数
    查看>>
    mysql之常见函数
    查看>>
    Mysql之性能优化--索引的使用
    查看>>
    mysql之旅【第一篇】
    查看>>
    Mysql之索引选择及优化
    查看>>
    mysql之联合查询UNION
    查看>>
    mysql之连接查询,多表连接
    查看>>
    mysql乐观锁总结和实践 - 青葱岁月 - ITeye博客
    查看>>
    mysql也能注册到eureka_SpringCloud如何向Eureka中进行注册微服务-百度经验
    查看>>
    mysql乱码
    查看>>
    Mysql事务。开启事务、脏读、不可重复读、幻读、隔离级别
    查看>>
    MySQL事务与锁详解
    查看>>