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.打半质数表

……

代码:

  1. /*******************************************************************************/
  2. /* OS : 3.2.0-58-generic #88-Ubuntu SMP Tue Dec 3 UTC 2013 GNU/Linux
  3. * Compiler : g++ (GCC) 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)
  4. * Encoding : UTF8
  5. * Date :
  6. * All Rights Reserved by yaolong.
  7. *****************************************************************************/
  8. /* Description: ***************************************************************
  9. *****************************************************************************/
  10. /* Analysis: ******************************************************************
  11. *****************************************************************************/
  12. /*****************************************************************************/
  13. //*
  14.  
  15. #include <stdio.h>
  16. #include <iostream>
  17. #include <string>
  18. #include <cstring>
  19. using namespace std;
  20.  
  21. #define N 2000000
  22.  
  23. bool prime[N];
  24. bool dp[3*N];
  25. int first=1;
  26. void fun1()
  27. {
  28. memset(prime,1,sizeof(prime));
  29. memset(dp,0,sizeof(dp));
  30. int i;
  31. //从2开始筛选
  32. for(i=2; i*i<N; i++)
  33. if(prime[i])
  34. /*确定没被筛选过的,道理很简单:若x|y,y|z,则有x|z.(y被x筛选过,那么y能筛选的数都被x筛选了)可一定程度上避免多余的筛选*/
  35. for(int j=2*i; j<N; j+=i)
  36. prime[j]=false;
  37.  
  38. }
  39.  
  40. void fun2()
  41. {
  42. int i,j;
  43. for(i=2; i<N; i++)
  44. {
  45. int tmp=(2*N)/i;
  46. for(j=i; j<=N; j++)
  47. {
  48. if(j>tmp)
  49. break;
  50. if(prime[i]&&prime[j])
  51. {
  52. dp[i*j]=true;
  53.  
  54. }
  55. }
  56.  
  57. }
  58.  
  59. }
  60. int fun3(int x,int y)
  61. {
  62. int res=0;
  63. for(int i=x; i<=y; i++)
  64. {
  65. //cout<<dp[i];
  66. if(dp[i])
  67. {
  68. res++;
  69. }
  70.  
  71. }
  72. return res;
  73.  
  74. }
  75.  
  76. class Test
  77. {
  78. public:
  79. static int howmany (int x,int y)
  80. {
  81. if(first==1)
  82. {
  83. first=0;
  84. fun1();
  85. fun2();
  86. }
  87. return fun3(x,y);
  88. }
  89. };
  90. //start 提示:自动阅卷起始唯一标识,请勿删除或增加。
  91. int main()
  92. {
  93. cout<<Test::howmany(60,1000000)<<endl;
  94. }
  95. //end //提示:自动阅卷结束唯一标识,请勿删除或增加。

半质数的个数 csdn 英雄会 高校俱乐部的更多相关文章

  1. 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 ...

  2. [LeetCode] Count Primes 质数的个数

    Description: Count the number of prime numbers less than a non-negative number, n click to show more ...

  3. N的N次方(高校俱乐部)

    最近一直在刷字符串和线段树,也越来越少玩高校俱乐部,无聊看到一题N的N次方的问题,脑海中各种打表就涌现出来了. 弄了不一会儿,就写完了,马上提交,但是系统好像出了问题,提示"哦哦,出了点状况 ...

  4. L - Prime Number(求n内质数的个数)

    Description Write a program which reads an integer n and prints the number of prime numbers which ar ...

  5. [LeetCode] 204. Count Primes 质数的个数

    Count the number of prime numbers less than a non-negative number, n. Example: Input: 10 Output: 4 E ...

  6. 嘉泽 P2120: 【基础】半质数 题解

    原题链接 简要题意: 求区间内能分解为两个质数乘积的数. 欧拉筛先筛素数. 然后再筛答案. 时间复杂度: \(O(n)\). 实际得分:\(100pts\). #pragma GCC optimize ...

  7. 翻纸牌 高校俱乐部 英雄会 csdn

    题目描述 有一种纸牌游戏,很有意思,给你N张纸牌,一字排开,纸牌有正反两面,开始的纸牌可能是一种乱的状态(有些朝正,有些朝反),现在你需要整理这些纸牌.但是麻烦的是,每当你翻一张纸牌(由正翻到反,或者 ...

  8. 朋友的礼物(英雄会,csdn,高校俱乐部)信封问题,匹配模型

    前言: 首先这是一题解,但是重点最代码之后,有耐心的可以直接从代码后看. 上题目:n个人,每个人都有一件礼物想送给他人,他们决定把礼物混在一起,然后每个人随机拿走一件,问恰好有m个人拿到的礼物恰好是自 ...

  9. P次方数 英雄会 csdn 高校俱乐部

    题目: 一个整数N,|N| >= 2, 如果存在整数x,使得N = x * x * x... (p个x相乘) =x^p,则称N是p次方数,给定32位内的整数N,求最大的P.例如N=5,输出1,N ...

随机推荐

  1. iw命令

    iwconfig这个老工具已不推荐使用,iw支持大多新的设备并已被加入内核 iw help                            查看帮助 iw dev wlan0 scan     ...

  2. 修复直接删除linux系统后grub丢失错误

    如果删除了系统后,grub丢失,开机出现“grub>”的话,可以用如下代码进入目标linux系统:grub>ls (hd0,X)/boot             //x为目标系统所在分区 ...

  3. CMake 入门实战 | HaHack

    CMake 入门实战 | HaHack undefined

  4. Area - POJ 1265(pick定理求格点数+求多边形面积)

    题目大意:以原点为起点然后每次增加一个x,y的值,求出来最后在多边形边上的点有多少个,内部的点有多少个,多边形的面积是多少. 分析: 1.以格子点为顶点的线段,覆盖的点的个数为GCD(dx,dy),其 ...

  5. iOS开发之状态栏UIStatusBar图标操作

    NSArray *subIcons = [[[[UIApplication sharedApplication] valueForKeyPath:@"statusBar"] val ...

  6. thymelef 布局 fragment

    需求:布局页面, 把首页分成四个页面: header  footer ,content ,aside ,从githua 下载的原型, 所有内容是在一起的,这里拆分, 重用, 减少代码量 做法: 新建页 ...

  7. 有n个台阶,如果一次只能上1个或2个台阶,求一共有多少种上法

    // n级台阶,求多少种跳法.cpp : Defines the entry point for the console application. // /* 思路: 如果只有一级台阶,n=1,很明显 ...

  8. TortoiseSVN客户端重新设置用户名和密码[转]

    在第一次使用TortoiseSVN从服务器CheckOut的时候,会要求输入用户名和密码,这时输入框下面有个选项是保存认证信息,如果选了这个选项,那么以后就不用每次都输入一遍用户名密码了. 不过,如果 ...

  9. Day02 - Python 基本数据类型

    1 基本数据类型 Python有五个标准的数据类型: Numbers(数字) String(字符串) List(列表) Tuple(元组) Dictionary(字典) 1.1 数字 数字数据类型用于 ...

  10. MFC/VC++ UI界面美化技术

    1.     工具: 1.1设备环境类: Windows下的绘图操作说到底就是DC操作.DC(Device Context设备环境)对象是一个抽象的作图环境,可能是对应屏幕,也可能是对应打印机或其它. ...