题意;给出起始点和终点,找出其质因数相加的和与原数差的绝对值在bad范围之内的
</pre><pre name="code" class="cpp">#include<iostream>
#include<cstring>
#include<cmath>
#include<cstdio>
#define ll __int64
using namespace std;
ll num[1000001];
ll start,bad,stop,result;
int main()
{
// memset(num,0,sizeof(num));
for(int i=1;i<=1000000;i++)//求因数相加的和 ,超巧的方法,先打表算出来
{
int temp=2*i;//全都优化在求和上了
while(temp<=1000000)
{
num[temp]+=i;
temp+=i;
}
}
int cas=0;
while(scanf("%I64d%I64d%I64d",&start,&stop,&bad)!=EOF)
{
if(!(start||stop||bad))
break;
result=0;
cas++;
for(int i=start;i<=stop;i++)
{
if(abs(num[i]-i)<=bad)
result++;
}
printf("Test %d: %I64d\n",cas,result);
}
return 0;
}