zoukankan      html  css  js  c++  java
  • POJ 3292 Semi-prime H-numbers

    题意:

    H_Number 是一个比4的倍数多1的数,即4n + 1。H_Number 分为 H_Prime 和 H_Comosite。其中 H_Prime 仅能由1×h组成,而 H_Composite 除了1和h可有多个因子。H_Semi_Prime 表示仅有两个 H_Prime 因子(除了1和本身)。

    问:给一个 H_Number,求出1到 H_Number 中有多少个 H_Semi_Prime。

    思路:

    打表,表分为三种情况,0表示H_Number,1表示H_Semi_Prime, - 1表示H_Composite。先将表都初始化为0,然后从小到大打。

    #include <iostream>
    #include <cstring>
    using namespace std;
    
    const int MAX_H = 1000001;
    int H_number[MAX_H + 1];
    int Count[MAX_H];
    int H;
    void init() {
    	memset(H_number, 0, sizeof(H_number)); // H_number[x]==0表示x是H_Prime;
    	for (int i = 5; i <= MAX_H; i += 4)
    	for (int j = 5; j <= MAX_H; j += 4) {
    		if (i*j > MAX_H) break;
    		if (H_number[i] == 0 && H_number[j] == 0)
    			H_number[i*j] = 1; // 表示i*j为H_semi_Prime
    		else
    			H_number[i*j] = -1; // 表示i*j为H_Composite
    	}
    	Count[1] = 0; // 统计
    	for (int i = 5; i <= MAX_H; i += 4)
    	if (H_number[i] == 1) Count[i] = Count[i - 4] + 1;
    	else Count[i] = Count[i - 4];
    }
    void solve() {
    	printf("%d %d
    ", H, Count[H]);
    }
    int main()
    {
    	init();
    	while (cin >> H && H) {
    		solve();
    	}
    	return 0;
    }
  • 相关阅读:
    服务器运维
    mysq配置
    PHP-FPM进程数的设定
    vsftpd 安装配置详细教程
    php-fpm性能优化
    如果不知道MySQL当前使用配置文件(my.cnf)的路径的解决方法
    搭建linux+nginx+mysql+php环境
    PHP 页面编码声明方法详解(header或meta)
    Linux内核的一些知识。
    Connector框架笔记
  • 原文地址:https://www.cnblogs.com/demian/p/7407317.html
Copyright © 2011-2022 走看看