• 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 }
  • 相关阅读:
    安装go版本
    golang简介
    安装MySQL
    art.dialog.art 中,将子页面窗口中的值传递给父框架中
    Windows7下安装CentOS
    生成uuid
    如何开启win7端口的图文教程
    PHPMailer不能发送邮件
    sql 如果关联表 没有值 设置 默认值
    php array 分页
  • 原文地址:https://www.cnblogs.com/Deribs4/p/4269404.html
Copyright © 2020-2023  润新知