zoukankan      html  css  js  c++  java
  • UVa 11408

    题目:一个数的素因子的和假设也是素数就叫做DePrimes,统计给定区间内的DePrimes。

    分析:数论。本题使用用一种素数的筛法,欧拉筛法,也加线性筛法。

                            这样的方法,每次删选分两种情况:1.素因子不反复;2.素因子反复;

                            利用这个性质,统计DePrimes,假设素因子不同就加和,否则就取对应的最小不同集合;

                            打表计算,做差输出就可以。

    说明:线性筛法,比传统的筛法在数据量大时会快(⊙_⊙)。

    #include <iostream>
    #include <cstdlib>
    #include <cstdio>
    
    using namespace std;
    
    int visit[5000002];
    int prime[5000002];
    int sum[5000002];
    int ans[5000002]; 
    
    int main()
    {
    	for ( int i = 0 ; i < 5000001 ; ++ i ) 
    		visit[i] = sum[i] = 0;
    	int count = 0;
    	for ( int i = 2 ; i < 5000001 ; i ++ ) {
    		if ( !visit[i] ) {
    			prime[count ++] = i;
    			sum[i] = i;
    		}
    		for ( int j = 0 ; j<count&&i*prime[j]<5000001 ; ++ j ) {
    			visit[i*prime[j]] = 1;
    			if ( !(i%prime[j]) ) {//素因子有反复,去不反复部分 
    				sum[i*prime[j]] = sum[i];
    				break;
    			}else sum[i*prime[j]] = sum[i] + prime[j];//素因子不反复 
    		}
    		ans[i] = ans[i-1] + !visit[sum[i]];
    	}
    	
    	int a,b;
    	while ( scanf("%d",&a) && a ) {
    		scanf("%d",&b);
    		printf("%d
    ",ans[b]-ans[a-1]);
    	}
    	return 0;
    }
    

  • 相关阅读:
    看到一个很好看的细细的字体
    meta标签常用属性整理
    网页字体排印指南
    利用伪元素仿苹果手机官网导航
    利用css3-animation来制作逐帧动画
    CSS实现垂直居中的5种方法
    前端网站
    icon font
    flexbox布局总结
    Yahoo(YUI) CSS Reset:
  • 原文地址:https://www.cnblogs.com/blfshiye/p/4552933.html
Copyright © 2011-2022 走看看