一,题意: 
  一个H-number是所有的模四余一的数。(x=4*k+1) 
  如果一个H-number是H-primes 当且仅当它的因数只有1和它本身(除1外)。
  一个H-number是H-semi-prime当且仅当它只由两个H-primes的乘积表示。
  H-number剩下其他的数均为H-composite。
  给你一个数h,问1到h有多少个H-semi-prime数。
二,思路:
  1,打表;
  2,记数,并储存;
  3,输出;
三,步骤: 
  1,打H-semi-prime表
    i,初始化H_number[]等于零;
    ii,双重循环判断 number[i]和number[j]都等于0时
      (即i和j是H-primes时), H_number[i*j]等于1;
      否则等于-1(即i和j有一个不是H-primes);
  2,记录H-semi-prime的个数,并存入对应的数组元素中;
  3,直接输出 H_number[] 数组元素即可

  1. #include<iostream>
  2. #include<cstring>
  3. using namespace std;
  4. const int N = ;
  5. int H_number[N];
  6.  
  7. void print_H_number(){
  8. memset(H_number, , sizeof(H_number));
  9. for(int i = ; i < N ; i+=){
  10. for(int j = ; j < N ; j+=){
  11. if(i*j>N)break; //防止越界
  12. if(H_number[j]==&&H_number[i]==) //表示i和j都是H-primes
  13. H_number[i*j]=; //标识 1 表示时是 H-semi-prime
  14. else
  15. H_number[i*j]=-; // 表示i和j有一个不是H-primes 所做的标识
  16. }
  17. }
  18. }
  19.  
  20. void work(){
  21. int count=;
  22. for(int i = ; i < N ; i++){
  23. if(H_number[i]==)count++; //记录 H-prime 的个数
  24. H_number[i]=count; //将每个范围中的 H-prime 个数存入对应的数组元素中
  25. }
  26. }
  27.  
  28. int main(){
  29. int n ;
  30. print_H_number();
  31. work();
  32. while(cin>>n,n){
  33. cout<<n<<" "<<H_number[n]<<endl;
  34. }
  35. return ;
  36. }

版权声明:本文为博主原创文章,未经博主允许不得转载。

poj3292-Semi-prime H-numbers(筛法打表)的更多相关文章

  1. poj3292(筛法+打表)

    题目链接:https://vjudge.net/problem/POJ-3292 题意:定义4n+1数(简称H数),H数分为三类:unit,即为1; H-primes,只能分解为1×自身,类似于我们平 ...

  2. CodeForces 385C Bear and Prime Numbers 素数打表

    第一眼看这道题目的时候觉得可能会很难也看不太懂,但是看了给出的Hint之后思路就十分清晰了 Consider the first sample. Overall, the first sample h ...

  3. UVA 10539 - Almost Prime Numbers 素数打表

    Almost prime numbers are the non-prime numbers which are divisible by only a single prime number.In ...

  4. JD 题目1040:Prime Number (筛法求素数)

    OJ题目:click here~~ 题目分析:输出第k个素数 贴这么简单的题目,目的不清纯 用筛法求素数的基本思想是:把从1開始的.某一范围内的正整数从小到大顺序排列, 1不是素数,首先把它筛掉.剩下 ...

  5. codeforces 9 div2 C.Hexadecimal's Numbers 暴力打表

    C. Hexadecimal's Numbers time limit per test 1 second memory limit per test 64 megabytes input stand ...

  6. e-olymp Problem9 N-digit numbers(打表)

    传送门:点我 N-digit numbers Find the quantity of N-digit numbers, which the sum is equal to their product ...

  7. (全国多校重现赛一) H Numbers

    zk has n numbers a1,a2,...,ana1,a2,...,an. For each (i,j) satisfying 1≤i<j≤n, zk generates a new ...

  8. 杭电2019多校第八场 Acesrc and Good Numbers——思维打表&&oeis

    题意 给定 $d,x$,$f(d,k)$ 表示 $1 \sim k$ 中 $d$ 出现的次数, $k$ 满足 $f(d,k) = k$,求小于 $x$ 的最大的 $k$. 分析 正解不会...,学习了 ...

  9. 数学--数论--HDU2136 Largest prime factor 线性筛法变形

    Problem Description Everybody knows any number can be combined by the prime number. Now, your task i ...

随机推荐

  1. 基线 css

    原文地址:http://blog.jobbole.com/31926/ 英文原文:CSS Baseline,编译:飞鸟分享 译者注:网页设计布局中一直比较流行网格对齐,但只是针对水平的对齐,很少或者没 ...

  2. shell-bash学习04读取输入、分隔符、流程控制

    读入输出 输入通常是通过stdin或参数传递给命令; 输出出现在stderr或stdout; 管道,过滤器,管道操作符: cmd1 | cmd2 | cmd3; //最后还有输出 ls | cat - ...

  3. So you want to be a 2n-aire?[HDU1145]

    So you want to be a 2n-aire?Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java ...

  4. lua 获取文件名和扩展名

    local str = "aaa.bbb.bbb.txt" --获取文件名 function getFileName(str) local idx = str:match(&quo ...

  5. 使用ajax和history.pushState无刷新改变页面URL

    表现 如果你使用chrome或者firefox等浏览器访问本博客.github.com.plus.google.com等网站时,细心的你会发现页面之间的点击是通过ajax异步请求的,同时页面的URL发 ...

  6. Android -- 闹钟服务的使用(单次闹钟)

    1. 效果图

  7. iOS 自动布局小结

    1> sizeclasses 可以限制某个 storyboard 显示在什么样的屏幕上,如 当前 storyboard 在iPhone 的左斜右斜或 iPad上是否显示.. 2> Hug值 ...

  8. PHP IDE phpstorm 快捷键

    这篇文章主要介绍了PHP IDE phpstorm 常用快捷键,本文分别列出了mac系统和Windows系统下的phpstorm快捷键,需要的朋友可以参考下 一.mac电脑phpstorm快捷键 co ...

  9. The Beatles-Hey Jude

    轉載自 https://www.youtube.com/watch?v=V3jCYm_QGZQ Hey Jude, don't make it bad.Take a sad song and make ...

  10. docker 练习

    echo 'DOCKER_OPTS="-b=bridge0"' >> /etc/default/docker sudo docker run -i -t centos ...