zoukankan      html  css  js  c++  java
  • CodeForces

    A number is called almost prime if it has exactly two distinct prime divisors. For example, numbers 6, 18, 24 are almost prime, while 4, 8, 9, 42 are not. Find the amount of almost prime numbers which are between 1 and n, inclusive.

    Input

    Input contains one integer number n (1 ≤ n ≤ 3000).

    Output

    Output the amount of almost prime numbers between 1 and n, inclusive.

    Examples Input

    10

    Output

    2

    Input

    21

    Output

    8

    如果数字恰好具有两个不同的素数除数,则称为几乎素数。 例如,数字6、18、24几乎是质数,而数字4、8、9、42不是。 找出介于1和n之间(含1和n)的几乎质数的数量。

    输入值
    输入包含一个整数n(1≤n≤3000)。

    输出量
    输出1到n之间(含1和n)的几乎质数的数量。

    例子
    输入
    10
    输出
    2
    输入
    21
    输出
    8

    这道是CF上的题目,我选择了用打表+set做的,题意是输出1-n中几乎质数的数量,几乎质数就是有两个不同质数的除数,即有两个不同的质因子,这里开一个前缀和数组sum,下标存放的是1-i的几乎质数的个数,因为集合的去重性,用集合才存储不同的质因子,一旦szie等于2则说明该数是几乎质数,数据最大到3000,最后打表直接输出sum[n]的值即可。AC代码

    #include <cstdio>
    #include <iostream>
    #include <algorithm>
    #include <stack>
    #include <queue>
    #include <set>
    #include <cstring>
    using namespace std;
    const int _max=3e3+50;
    int sum[_max]={0};//前缀和数组
    int main()
    {
    	bool check(int);
    	for(int i=1;i<=3000;i++)
    	{
    		if(check(i))//判断一下这个数是不是几乎质数
    		  sum[i]=sum[i-1]+1;
    		else
    		  sum[i]=sum[i-1];  
    	}
    	int n;
    	cin>>n;
    	cout<<sum[n]<<endl;
    	return 0;
    }
    bool check(int s)
    {
    	set<int >beg;
    	for(int i=2;i*i<=s;i++)//分解质因子的过程
    	  while(s%i==0)
    	  {
    	  	beg.insert(i);
    	  	s/=i;
    	  }
    	if(s!=1)
    	  beg.insert(s);
    	if(beg.size()==2)//等于2则返回true
    	  return true;
    	return false;    
    }
    
  • 相关阅读:
    android 模拟器报 no CPU/ABI system image for target
    Android SDK Manager 更新代理配置
    IIS日志文件清理
    Android开发环境搭建
    Android 应用开发特色
    Android 系统架构
    Npm安装以及express框架的使用
    javascript中的回调函数(callback)
    Windows环境下的NodeJS+NPM+Bower安装配置
    JavaScriptSerializer 序列化json 时间格式
  • 原文地址:https://www.cnblogs.com/Hayasaka/p/14294324.html
Copyright © 2011-2022 走看看