poj3292-Semi-prime H-numbers(筛法打表)
一,题意:
一个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[] 数组元素即可
#include<iostream>
#include<cstring>
using namespace std;
const int N = ;
int H_number[N]; void print_H_number(){
memset(H_number, , sizeof(H_number));
for(int i = ; i < N ; i+=){
for(int j = ; j < N ; j+=){
if(i*j>N)break; //防止越界
if(H_number[j]==&&H_number[i]==) //表示i和j都是H-primes
H_number[i*j]=; //标识 1 表示时是 H-semi-prime
else
H_number[i*j]=-; // 表示i和j有一个不是H-primes 所做的标识
}
}
} void work(){
int count=;
for(int i = ; i < N ; i++){
if(H_number[i]==)count++; //记录 H-prime 的个数
H_number[i]=count; //将每个范围中的 H-prime 个数存入对应的数组元素中
}
} int main(){
int n ;
print_H_number();
work();
while(cin>>n,n){
cout<<n<<" "<<H_number[n]<<endl;
}
return ;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
poj3292-Semi-prime H-numbers(筛法打表)的更多相关文章
- poj3292(筛法+打表)
题目链接:https://vjudge.net/problem/POJ-3292 题意:定义4n+1数(简称H数),H数分为三类:unit,即为1; H-primes,只能分解为1×自身,类似于我们平 ...
- CodeForces 385C Bear and Prime Numbers 素数打表
第一眼看这道题目的时候觉得可能会很难也看不太懂,但是看了给出的Hint之后思路就十分清晰了 Consider the first sample. Overall, the first sample h ...
- UVA 10539 - Almost Prime Numbers 素数打表
Almost prime numbers are the non-prime numbers which are divisible by only a single prime number.In ...
- JD 题目1040:Prime Number (筛法求素数)
OJ题目:click here~~ 题目分析:输出第k个素数 贴这么简单的题目,目的不清纯 用筛法求素数的基本思想是:把从1開始的.某一范围内的正整数从小到大顺序排列, 1不是素数,首先把它筛掉.剩下 ...
- 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 ...
- e-olymp Problem9 N-digit numbers(打表)
传送门:点我 N-digit numbers Find the quantity of N-digit numbers, which the sum is equal to their product ...
- (全国多校重现赛一) H Numbers
zk has n numbers a1,a2,...,ana1,a2,...,an. For each (i,j) satisfying 1≤i<j≤n, zk generates a new ...
- 杭电2019多校第八场 Acesrc and Good Numbers——思维打表&&oeis
题意 给定 $d,x$,$f(d,k)$ 表示 $1 \sim k$ 中 $d$ 出现的次数, $k$ 满足 $f(d,k) = k$,求小于 $x$ 的最大的 $k$. 分析 正解不会...,学习了 ...
- 数学--数论--HDU2136 Largest prime factor 线性筛法变形
Problem Description Everybody knows any number can be combined by the prime number. Now, your task i ...
随机推荐
- position-relative 的问题
对100%宽度的元素0001添加position-relative属性,如果再给left/right属性,可能会导致0001元素超出其父盒子的范围.如果盒子0001的父级元素是body,可能会出现滚动 ...
- 《DSP using MATLAB》示例Example4.9
收敛域在圆外,对应原始时间序列为右边序列. 上代码: b = 1; a = poly([0.9, 0.9, -0.9]); % compute the polynomials coefficients ...
- 06_Java多线程、线程间通信
1. 线程的概念 1.1多进程与多线程 进程:一个正在执行的程序.每个进程执行都有一个执行顺序,该顺序是一个执行路径,或叫一个控制单元. 一个进程至少有一个线程. 线程:就是进程中的一个独立 ...
- JS 中面向对象的5种写法
//第1种写法 function Circle(r) { this.r = r; } Circle.PI = 3.14159; Circle.prototype.area = function() { ...
- NumPy 学习(2): 数组的操作
1. 简单一维数组的操作 一维数组的操作类似于python自身的list类型. In [14]: arr = np.arange(10) In [15]: arr Out[15]: array([0, ...
- Python基础2- Hello,world
第一个程序Hello,world! 交互式编程:在终端窗口中输入:python回车后直接进入python交互模式,然后在提示符>>>后面输入:print 'Hello,world!' ...
- three.js加入监控
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- iOS学习12之OC属性和点语法
1.属性(@property和@Synthesize) 1> 属性是 Objective-C 2.0 定义的语法,提供 setter 和 getter 方法的默认实现.在一定程度上简化代码,并且 ...
- python 代码片段23
#coding=utf-8 #python还支持动态的实力属性,即那些没有在类定义里生命的属性, #可以"凭空"创造出来 john.tatto='Mom' #继承 class Em ...
- 关于vim插件
本人比较喜欢amix它集成了很多插件. 1.mru.vim:用于打开最近使用过的文件 使用命令: :MRU 打开最近的文件列表 上下箭头可以移动关标 :o 在新窗口中打开文件 2.NERD T ...