记录编号 462826 评测结果 AAAAAAAAAA
题目名称 [NOIP 2012PJ]质因数分解 最终得分 100
用户昵称 GravatarJustWB 是否通过 通过
代码语言 C++ 运行时间 0.016 s
提交时间 2017-10-23 11:26:14 内存使用 43.23 MiB
显示代码纯文本
  1. #include<cstdio>
  2. #include<iostream>
  3. #include<cmath>
  4. const int maxn=9000000;
  5. using namespace std;
  6. inline int get();
  7. int n;
  8. int prime[maxn],tmp;
  9. bool jud[maxn];
  10. int main()
  11. {
  12. freopen("prime.in","r",stdin);
  13. freopen("prime.out","w",stdout);
  14. n=get();
  15. for(int i=2;i<=sqrt(n);i++)
  16. {
  17. if(!jud[i])
  18. {
  19. jud[i]=true;
  20. prime[tmp++]=i;
  21. if(!(n%i))
  22. {
  23. int t=n/i;
  24. if(t>i)printf("%d\n",t);
  25. else printf("%d\n",i);
  26. return 0;
  27. }
  28. else
  29. {
  30. for(int j=0;j<tmp && i * prime[j] <= 50000;j++)
  31. {
  32. if(i*prime[j]>=n)break;
  33. jud[i*prime[j]]=true;
  34. if(!(i%prime[j]))break;
  35. }
  36. }
  37. }
  38. }
  39. return 0;
  40. }
  41. inline int get()
  42. {
  43. int t=0;char c=getchar(),j=1;
  44. while(!isdigit(c))
  45. if(c=='-')j=-1,c=getchar();
  46. else c=getchar();
  47. while(isdigit(c))
  48. t=(t<<3)+(t<<1)+c-'0',
  49. c=getchar();
  50. return j*t;
  51. }