版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sugar_free_mint/article/details/82024984
题目
把 质因数分解
分析
直接1到 试除法 ,是会超时的,所以就尝试用质数筛一筛,那么对于每个质数p,个数就是
代码
#include <cstdio>
int n,ans; bool v[501001]; long long t=2;
void print(int ans){if (ans>9) print(ans/10); putchar(ans%10+48);}
int main(){
scanf("%d",&n);
while (t<=n) ans+=n/t,t<<=1;
putchar('2'); putchar(' ');
print(ans); putchar('\n'); ans=0;
for (register int i=1;i<=n-1>>1;i++)
if (!v[i]){
t=i<<1|1; ans=0;
while (t<=n) //求答案
ans+=n/t,t=t*(i<<1|1);
print(i<<1|1); putchar(' ');
print(ans); putchar('\n');
for (register int j=i;j<=n/(i<<1|1)>>1;j++)
v[(i<<1|1)*(j<<1|1)>>1]=1;//神奇的筛法
}
return 0;
}