CodeForce 236B Easy Number Challenge(筛法求素数 + 整数因式分解)
2 seconds
256 megabytes
Let's denote d(n) as the number of divisors of a positive integer n. You are given three integers a, b and c. Your task is to calculate the following sum:
Find the sum modulo 1073741824 (230).
The first line contains three space-separated integers a, b and c (1 ≤ a, b, c ≤ 100).
Print a single integer — the required sum modulo 1073741824 (230).
2 2 2
20
5 6 7
1520
For the first example.
- d(1·1·1) = d(1) = 1;
- d(1·1·2) = d(2) = 2;
- d(1·2·1) = d(2) = 2;
- d(1·2·2) = d(4) = 3;
- d(2·1·1) = d(2) = 2;
- d(2·1·2) = d(4) = 3;
- d(2·2·1) = d(4) = 3;
- d(2·2·2) = d(8) = 4.
So the result is 1 + 2 + 2 + 3 + 2 + 3 + 3 + 4 = 20.
#include <cstdio>
#include <iostream>
#include <cstring>
#include <set>
#include <cmath>
using namespace std;
typedef long long LL;
const int Mod = 1073741824;
int prime[1000000], vis[10000050];int pri_cnt;
void get_prime() { // 筛法求素数int m = (int)sqrt(100000 + 1);pri_cnt = 0;memset(vis, 0, sizeof(vis));vis[0] = 1;vis[1] = 1;for(int i = 2; i <= m; ++i) {if(!vis[i]) {prime[pri_cnt++] = i;for(int j = i * i; j <= 1000005;j += i)vis[j] = 1;}}
}int get_cnt(int x) { // 求x的因数有多少个if(x == 1) return 1;if(!vis[x]) return 2;int ans = 1;for(int i = 0; x != 1 && i < pri_cnt; ++i) {int cnt = 0;while(x % prime[i] == 0) {cnt++;x /= prime[i];}ans = ans * (cnt + 1);}return ans;
}int main() {get_prime();int a, b, c;while(~scanf("%d%d%d", &a, &b, &c)) {int ans = 0;for(int i = 1; i <= a; ++i) {for(int j = 1; j <= b; ++j) {for(int k = 1; k <= c; ++k) {ans = (ans + get_cnt(i * j * k)) % Mod;}}}printf("%d\n", ans);}return 0;
}
CodeForce 236B Easy Number Challenge(筛法求素数 + 整数因式分解)相关推荐
- Java用“埃氏筛法”求素数
用"埃氏筛法"求素数. 先去掉2的倍数,再去掉3的倍数,再去掉4的倍数,--依此类推,最后剩下的就是素数. 要求:使用数组,使用数组的长度,使用增强的for语句 import ja ...
- 线性筛法求素数c语言,[算法]素数筛法(埃氏筛法线性筛法)
一.素数筛的定义 给定一个整数n,求出[1,n]之间的所有质数(素数),这样的问题为素数筛(素数的筛选问题). 二.埃氏筛法(Eratosthenes筛法) 埃氏筛法又叫做Eratosthenes筛法 ...
- 一般筛法求素数+快速线性筛法求素数
一般筛法求素数+快速线性筛法求素数 标签: 正则表达式算法优化扩展c 2010-08-22 01:28 28738人阅读 评论(8) 收藏 举报 分类: 算法学习资料(5) 版权声明:本文为博主原 ...
- 一般筛法和快速线性筛法求素数 求素数的一点总结
素数总是一个比较常涉及到的内容,掌握求素数的方法是一项基本功. 基本原则就是题目如果只需要判断少量数字是否为素数,直接枚举因子2 ..N^(0.5) ,看看能否整除N. 如果需要判断的次数较多,则先用 ...
- 1042: 筛法求素数
1042: 筛法求素数 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 1387 Solved: 918 [Submit][Status][Web B ...
- 素数筛法求素数(线性时间)
摘自:http://blog.csdn.net/once_hnu/article/details/6302283 逆向思维的典型应用! 1)普通方法判断素数:O(n*sqrt(n)) 2)筛法求素数: ...
- 数论 判断素数:普通素数判别 线性筛 二次筛法求素数 米勒拉宾素数检验
普通的素数判断法 当我们要判断一个数字是否是素数的时候,往往会直接看这个数字模1到这个数字的根号,看有没有等于零的,从而判断这个数字是不是素数,这样做的时间复杂度为O(sqrt(n)) bool is ...
- 普通素数 筛法求素数 二次筛法求素数 MillerRabin素数测试【模板】
素数和合数共同的性质: 1.a > 1是合数,当且仅当a = b * c,其中1 < b < a,1 < c < a. 2.合数必有素数因子. 3.如果d > 1, ...
- 筛法求素数 (20分)
题干: 素数是仅仅能被它本身和1整除的任何整数.筛法求素数是一种查找素数的方法.它的算法如下: 1.创建一个数组,并将所有元素初始化为1(真).具有素数下标的数组元素将保持为1,而其它数组元素最终将被 ...
最新文章
- 第六届数学、计算机与生命科学交叉研究青年学者论坛 (大牛云集的生信会议,免注册费且提供午餐)...
- 【六一儿童节】回忆一下“孩子们的游戏”!(码农版)
- Web Farm Web Garden
- 两个组件连线_如何正确的使用日志组件 Log4j、SLF4J、Logback
- linux下apache+SVN搭建完美版
- setTimeout和setInterval的使用
- android computescroll_Android Scroller与computeScroll方法的调用关系
- Python中字符串切片详解
- hadoop join之semi join
- 【HDU - 2255】奔小康赚大钱(KM算法模板,二分图最优匹配)
- CentOS 5安装mplayer
- 当初阿里巴巴、百度、美团都差点错过的架构,现在用起来真香!
- 死锁的充分必要条件、死锁预防、死锁避免、死锁检测和解除
- 计算机一级win7操作题,计算机等级考试一级WIN7操作题.docx
- 芒格:倒过来思考有利于理解事物本质并解决问题
- 3分钟下载好网易云付费音乐
- 传感器实验——光敏电阻传感器
- 有限温度量子多体系统与热态张量网络
- 11月全国程序员平均工资最新出炉,网友:我丢了同行的脸
- 全球软件公司排名2020
热门文章
- 三大独家优势赢得关注 神策数据成功签约借贷宝
- CodeIgniter中Router类的两个方法
- android构建过程
- python基础之python中if __name__ == '__main__': 的解析
- 悼念传奇,约翰询问#183;纳什和他的妻子艾丽西亚致敬,创建一个传奇,爱数学...
- Android Textview控件
- 数组的扩展-搜集自无忧脚本
- 网管员心声:Windows服务有“备”无患
- 数据战略和风险管理系统
- Self-reflection for career