码迷,mamicode.com
首页 > 其他好文 > 详细

HDU 1215

时间:2014-08-29 10:52:17      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:blog   os   使用   io   for   div   log   sp   amp   

由算术基本定理,

直接使用公式就好

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;

const int Maxp=1000;

bool isprime[Maxp];
int prime[Maxp],nprime;

void Doprime(){
	memset(isprime,true,sizeof(isprime));
	nprime=0;
	isprime[1]=false;
	for(int i=2;i<Maxp;i++){
		if(isprime[i]){
			prime[nprime++]=i;
			for(int j=i*i;j<Maxp;j+=i){
				isprime[j]=false;
			}
		}
	}
}

int main(){
	Doprime();
	int t,n;
	scanf("%d",&t);
	while(t--){
		scanf("%d",&n);
		int tn=n;
		int ans=1;
		for(int i=0;i<nprime&&prime[i]<=n;i++){
			int tmp=1;
			if(n%prime[i]==0){
				while(n%prime[i]==0){
					n/=prime[i];
					tmp*=prime[i];
				}
				ans=ans*(tmp*prime[i]-1)/(prime[i]-1);
			}
		}
	//	cout<<n<<endl;
		if(n!=1)
		ans=ans*(n+1);
		printf("%d\n",ans-tn);
	}
	return 0;
}

  

HDU 1215

标签:blog   os   使用   io   for   div   log   sp   amp   

原文地址:http://www.cnblogs.com/jie-dcai/p/3944298.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!