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

    题意:参考https://blog.csdn.net/lyy289065406/article/details/6648537

    一个H-number是所有的模四余一的数。

    如果一个H-number是H-primes 当且仅当它的因数只有1和它本身(除1外)。

    一个H-number是H-semi-prime当且仅当它只由两个H-primes的乘积表示。

    H-number剩下其他的数均为H-composite。

    给你一个数h,问1到h有多少个H-semi-prime数。
    思路  :直接暴力打表 因为h <=1e6  而  打表的复杂度是 log4(h)*log4(h)所以 不会超时  不要误以为是n^2的复杂度

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<vector>
     4 #include<cmath>
     5 #include<iostream>
     6 using namespace std;
     7 const int maxn=1e6+1000;
     8 int H_primes[maxn+1];
     9 int vis[maxn+1];
    10 int ans[maxn];
    11 int cnt;
    12 void init(){
    13     cnt=0;
    14     for(int i=5;i<=maxn;i+=4){
    15         for(int j=5;j<=maxn;j+=4){
    16             int mul=i*j;
    17             if(mul>maxn)break;
    18             if(H_primes[i]==0&&H_primes[j]==0)
    19                 H_primes[mul]=1;
    20             else H_primes[mul]=-1;
    21         }
    22 
    23     }
    24     for(int k=1;k<=maxn;k++){
    25         if(H_primes[k]==1)
    26             cnt++;
    27         ans[k]=cnt;
    28     }
    29 }
    30 int main(){
    31     init();
    32     int n;
    33     while(scanf("%d",&n)==1&&n){
    34         printf("%d %d
    ",n,ans[n]);
    35     }
    36     return 0;
    37 }
  • 相关阅读:
    【01】国内外git托管平台(总结by魔芋)
    【01】git下载和安装的完整过程
    分享一些正确的放松方式
    【03】图解原型和原型链by魔芋
    求一个正整数的阶乘
    乘法表
    Web Best Practices
    【03】const
    【02】块级作用域
    【01】let和const命令
  • 原文地址:https://www.cnblogs.com/ttttttttrx/p/10279695.html
Copyright © 2011-2022 走看看