zoukankan      html  css  js  c++  java
  • hdu 1215 七夕节

    参考博客:http://blog.csdn.net/niushuai666/article/details/7346408
    收获:线性素数筛法、素数分解法
    公式博客:http://www.cnblogs.com/baidongtan/archive/2012/08/30/2663015.html
    还有关于素数筛法的三种比较:http://blog.csdn.net/sjf0115/article/details/8693756

     1 #include<iostream>
     2 #include<cstring>
     3 #include<cstdio>
     4 #include<string>
     5 #include<cmath>
     6 #include<algorithm>
     7 using namespace std;
     8 #define MAX 500000
     9 bool vis[MAX+5];
    10 int prime[MAX+5];
    11 void print_prime(){//线性求素数法
    12     memset(vis,false,sizeof(vis));
    13     int i,index=0;//注意初始化!!
    14     int half=sqrt(MAX*1.0)+1;
    15     for(i=2;i<half;i++){
    16         if(!vis[i]){
    17             prime[index++]=i;
    18         }
    19         for(int j=0;j<index&&prime[j]*i<=MAX;j++){
    20             vis[prime[j]*i]=true;
    21             if(i%prime[j]==0){
    22                 break;
    23             }
    24         }
    25     }
    26 }
    27 int work(int n){//素数分解
    28     int i=0,total=1,temp=n;
    29     for(;prime[i]*prime[i]<=n;i++){
    30         int sum=1,num=1;
    31         while(n%prime[i]==0){
    32             num*=prime[i];
    33             n/=prime[i];
    34             sum+=num;
    35         }
    36         total*=sum;
    37     }
    38     if(n!=1){//可能剩下的落单的最大素数
    39         total*=n+1;
    40     }
    41     return total-temp;
    42 }
    43 int main()
    44 {
    45     int t;
    46     cin>>t;
    47     print_prime();
    48     //cout<<prime[0]<<endl;
    49     while(t--){
    50         int n;
    51         cin>>n;
    52         cout<<work(n)<<endl;
    53     }
    54     return 0;
    55 }
  • 相关阅读:
    js中删除数组元素的几种方法
    js中的prototype
    分布式服务框架 Zookeeper -- 管理分布式环境中的数据
    angularjs事件传递$on、$emit和$broadcast
    cron表达式
    angularjs中的时间格式化过滤
    angularjs中的$q
    IOS 错误
    Swift 错误
    IOS 控件
  • 原文地址:https://www.cnblogs.com/Deribs4/p/4269404.html
Copyright © 2011-2022 走看看