daneshvar.amrollahi
کاربر حرفهای

- ارسالها
- 327
- امتیاز
- 130
- نام مرکز سمپاد
- راهنمایی حلی۲/دبیرستان حلی۱۰/دبیرستان علامه طباطبایی
- شهر
- تهران
- سال فارغ التحصیلی
- 1397
- مدال المپیاد
- کامپیوتر
پاسخ : پرسش و پاسخ پیرامون برنامه نویسی
سلام. کوناه ترین راه برای محاسبه مجموع مقسوم علیه های عدد چیه؟ قراره t تا عدد بین محدوده 1 تا 500000 بگیره و این جمع رو چاپ کنه. کدی که خودم نوشتم بیشتر از 5 ثانیه زمان میگیره. باید زیر 5 ثانیه جواب بده:
سلام. کوناه ترین راه برای محاسبه مجموع مقسوم علیه های عدد چیه؟ قراره t تا عدد بین محدوده 1 تا 500000 بگیره و این جمع رو چاپ کنه. کدی که خودم نوشتم بیشتر از 5 ثانیه زمان میگیره. باید زیر 5 ثانیه جواب بده:
کد:
#include<iostream>
#include<math.h>
using namespace std;
bool pcheck(unsigned long int x)
{
for (int i=2;i<=sqrt(x);i++)
if (x%i==0)
return false;
return true;
}
int main()
{
int t;
cin>>t;
unsigned long int n;
while(t>0)
{
cin>>n;
unsigned long int x=n;
unsigned int b=2;
double sum=1;
unsigned int power;
while (n!=1)
{
while ( ((pcheck(b)==false) || (n%b!=0)) && (b<=sqrt(n) ) )
b++;
power = 0;
while (n%b==0)
{
power++;
n/=b;
}
sum*=(pow(b,power+1)-1)/(b-1);
b++;
}
sum-=x;
cout<<sum<<endl;
t--;
}
return 0;
}






