半质数的个数 csdn 英雄会 高校俱乐部
2·14 情人&元宵节专题:半质数的个数。
题目:质数是大家熟知的概念,我们定义一个半质数的概念:如果一个数恰好是两个质数的乘积(可以相同),则称它为半质数。前几个半质数是 4, 6, 9, 10, 14, 15, 21, 22, 25,
26。我们的问题是,输入两个正整数x<=y,问[x,y]之间有多少个半质数? 输入:x,y 输出:[x,y]之间有多少个半质数。 输入数据范围 1<=x<=y<=2000000。 祝所有挑战的Heros 2014年情人节、元宵节快乐。
解释:这是一道简单的题目,思路就是打表吧。没多困难。(我怎么发现我写的问题都几乎是当成水题来做的?)
众所周知,求逆的问题相对来说都是比较困难,比如分解问题,矩阵求逆等等。既然范围已出且在可接受范围,那 么还多虑什么?
步骤: 1.打素数表
2.打半质数表
……
代码:
- /*******************************************************************************/
- /* OS : 3.2.0-58-generic #88-Ubuntu SMP Tue Dec 3 UTC 2013 GNU/Linux
- * Compiler : g++ (GCC) 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)
- * Encoding : UTF8
- * Date :
- * All Rights Reserved by yaolong.
- *****************************************************************************/
- /* Description: ***************************************************************
- *****************************************************************************/
- /* Analysis: ******************************************************************
- *****************************************************************************/
- /*****************************************************************************/
- //*
- #include <stdio.h>
- #include <iostream>
- #include <string>
- #include <cstring>
- using namespace std;
- #define N 2000000
- bool prime[N];
- bool dp[3*N];
- int first=1;
- void fun1()
- {
- memset(prime,1,sizeof(prime));
- memset(dp,0,sizeof(dp));
- int i;
- //从2开始筛选
- for(i=2; i*i<N; i++)
- if(prime[i])
- /*确定没被筛选过的,道理很简单:若x|y,y|z,则有x|z.(y被x筛选过,那么y能筛选的数都被x筛选了)可一定程度上避免多余的筛选*/
- for(int j=2*i; j<N; j+=i)
- prime[j]=false;
- }
- void fun2()
- {
- int i,j;
- for(i=2; i<N; i++)
- {
- int tmp=(2*N)/i;
- for(j=i; j<=N; j++)
- {
- if(j>tmp)
- break;
- if(prime[i]&&prime[j])
- {
- dp[i*j]=true;
- }
- }
- }
- }
- int fun3(int x,int y)
- {
- int res=0;
- for(int i=x; i<=y; i++)
- {
- //cout<<dp[i];
- if(dp[i])
- {
- res++;
- }
- }
- return res;
- }
- class Test
- {
- public:
- static int howmany (int x,int y)
- {
- if(first==1)
- {
- first=0;
- fun1();
- fun2();
- }
- return fun3(x,y);
- }
- };
- //start 提示:自动阅卷起始唯一标识,请勿删除或增加。
- int main()
- {
- cout<<Test::howmany(60,1000000)<<endl;
- }
- //end //提示:自动阅卷结束唯一标识,请勿删除或增加。
半质数的个数 csdn 英雄会 高校俱乐部的更多相关文章
- CSDN 高校俱乐部: 排列搜索
CSDN 高校俱乐部/英雄会 题目: 设数组a包含n个元素恰好是0..n - 1的一个排列,给定b[0],b[1],b[2],b[3]问有多少个0..n-1的排列a,满足(a[a[b[0]]]*b[0 ...
- [LeetCode] Count Primes 质数的个数
Description: Count the number of prime numbers less than a non-negative number, n click to show more ...
- N的N次方(高校俱乐部)
最近一直在刷字符串和线段树,也越来越少玩高校俱乐部,无聊看到一题N的N次方的问题,脑海中各种打表就涌现出来了. 弄了不一会儿,就写完了,马上提交,但是系统好像出了问题,提示"哦哦,出了点状况 ...
- L - Prime Number(求n内质数的个数)
Description Write a program which reads an integer n and prints the number of prime numbers which ar ...
- [LeetCode] 204. Count Primes 质数的个数
Count the number of prime numbers less than a non-negative number, n. Example: Input: 10 Output: 4 E ...
- 嘉泽 P2120: 【基础】半质数 题解
原题链接 简要题意: 求区间内能分解为两个质数乘积的数. 欧拉筛先筛素数. 然后再筛答案. 时间复杂度: \(O(n)\). 实际得分:\(100pts\). #pragma GCC optimize ...
- 翻纸牌 高校俱乐部 英雄会 csdn
题目描述 有一种纸牌游戏,很有意思,给你N张纸牌,一字排开,纸牌有正反两面,开始的纸牌可能是一种乱的状态(有些朝正,有些朝反),现在你需要整理这些纸牌.但是麻烦的是,每当你翻一张纸牌(由正翻到反,或者 ...
- 朋友的礼物(英雄会,csdn,高校俱乐部)信封问题,匹配模型
前言: 首先这是一题解,但是重点最代码之后,有耐心的可以直接从代码后看. 上题目:n个人,每个人都有一件礼物想送给他人,他们决定把礼物混在一起,然后每个人随机拿走一件,问恰好有m个人拿到的礼物恰好是自 ...
- P次方数 英雄会 csdn 高校俱乐部
题目: 一个整数N,|N| >= 2, 如果存在整数x,使得N = x * x * x... (p个x相乘) =x^p,则称N是p次方数,给定32位内的整数N,求最大的P.例如N=5,输出1,N ...
随机推荐
- iw命令
iwconfig这个老工具已不推荐使用,iw支持大多新的设备并已被加入内核 iw help 查看帮助 iw dev wlan0 scan ...
- 修复直接删除linux系统后grub丢失错误
如果删除了系统后,grub丢失,开机出现“grub>”的话,可以用如下代码进入目标linux系统:grub>ls (hd0,X)/boot //x为目标系统所在分区 ...
- CMake 入门实战 | HaHack
CMake 入门实战 | HaHack undefined
- Area - POJ 1265(pick定理求格点数+求多边形面积)
题目大意:以原点为起点然后每次增加一个x,y的值,求出来最后在多边形边上的点有多少个,内部的点有多少个,多边形的面积是多少. 分析: 1.以格子点为顶点的线段,覆盖的点的个数为GCD(dx,dy),其 ...
- iOS开发之状态栏UIStatusBar图标操作
NSArray *subIcons = [[[[UIApplication sharedApplication] valueForKeyPath:@"statusBar"] val ...
- thymelef 布局 fragment
需求:布局页面, 把首页分成四个页面: header footer ,content ,aside ,从githua 下载的原型, 所有内容是在一起的,这里拆分, 重用, 减少代码量 做法: 新建页 ...
- 有n个台阶,如果一次只能上1个或2个台阶,求一共有多少种上法
// n级台阶,求多少种跳法.cpp : Defines the entry point for the console application. // /* 思路: 如果只有一级台阶,n=1,很明显 ...
- TortoiseSVN客户端重新设置用户名和密码[转]
在第一次使用TortoiseSVN从服务器CheckOut的时候,会要求输入用户名和密码,这时输入框下面有个选项是保存认证信息,如果选了这个选项,那么以后就不用每次都输入一遍用户名密码了. 不过,如果 ...
- Day02 - Python 基本数据类型
1 基本数据类型 Python有五个标准的数据类型: Numbers(数字) String(字符串) List(列表) Tuple(元组) Dictionary(字典) 1.1 数字 数字数据类型用于 ...
- MFC/VC++ UI界面美化技术
1. 工具: 1.1设备环境类: Windows下的绘图操作说到底就是DC操作.DC(Device Context设备环境)对象是一个抽象的作图环境,可能是对应屏幕,也可能是对应打印机或其它. ...