zoukankan      html  css  js  c++  java
  • poj 3292 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数。

    Sample Input

    21 
    85
    789
    0

    Sample Output

    21 0
    85 5
    789 62
    刷水题练手
    首先一个数i是H数,那么i(4x+1)也是H数,且是H合数
    显然x不能为0
    因为i%4=1,(4x+1)%4=1
    复杂度是o(N/4*(lnN/4)/4)≈800000
     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstdio>
     4 #include<algorithm>
     5 #include<cmath>
     6 using namespace std;
     7 typedef long long lol;
     8 bool b[1000002];
     9 int semi[1000002];
    10 lol ans[1000002]; 
    11 int main()
    12 {lol i,j;
    13 int x;
    14   for (i=5;i<=1000001;i+=4)
    15     {
    16       for (j=5;j*i<=1000001;j+=4)
    17     {
    18       if (semi[i]==0&&semi[j]==0)
    19         semi[i*j]=1;
    20       else semi[i*j]=-1;
    21     }
    22     } 
    23   for (i=1;i<=1000001;i++)
    24     if (semi[i]==1)
    25     ans[i]=ans[i-1]+semi[i];
    26     else ans[i]=ans[i-1];
    27   while (cin>>x && x)
    28     {
    29       printf("%d %lld
    ",x,ans[x]);
    30     }
    31 }
    
    
    
    
    
    
  • 相关阅读:
    团队项目-选题报告
    图论3-分层图最短路
    图论2-次短路计数
    图论1-k短路
    noi online 提高组t2冒泡排序
    图和树
    搜索(bfs)
    搜索(dfs)
    笔记
    打工
  • 原文地址:https://www.cnblogs.com/Y-E-T-I/p/8074011.html
Copyright © 2011-2022 走看看