hdu 5108 求最大素因子

桃扇骨 2022-08-04 00:35 222阅读 0赞
  1. #include<bitset>
  2. #include<map>
  3. #include<vector>
  4. #include<cstdio>
  5. #include<iostream>
  6. #include<cstring>
  7. #include<string>
  8. #include<algorithm>
  9. #include<cmath>
  10. #include<stack>
  11. #include<queue>
  12. #include<set>
  13. #define inf 0x3f3f3f3f
  14. #define mem(a,x) memset(a,x,sizeof(a))
  15. using namespace std;
  16. typedef long long ll;
  17. typedef pair<int,int> pii;
  18. inline int in()
  19. {
  20. int res=0;
  21. char c;
  22. while((c=getchar())<'0' || c>'9');
  23. while(c>='0' && c<='9')res=res*10+c-'0',c=getchar();
  24. return res;
  25. }
  26. const int N=32000;
  27. bool vis[N];
  28. int prime[10000];
  29. int main()
  30. {
  31. int p=1;
  32. prime[0]=2;
  33. for(int i=3;i<N;i+=2)
  34. {
  35. if(!vis[i])
  36. {
  37. prime[p++]=i;
  38. for(int j=i+i;j<N;j+=i)这里老写错
  39. {
  40. vis[j]=1;
  41. }
  42. }
  43. }
  44. int n;
  45. while(~scanf("%d",&n))
  46. {
  47. int tmp=n;
  48. if(n==1)特判啊
  49. {
  50. puts("0");
  51. continue;
  52. }
  53. int t=n;
  54. for(int i=0;prime[i]*prime[i]<=n;i++)
  55. {
  56. while(n%prime[i]==0) n/=prime[i],t=prime[i];
  57. }
  58. t=max(t,n); //较大的那个
  59. printf("%d\n",tmp/t);
  60. }
  61. return 0;
  62. }

发表评论

表情:
评论列表 (有 0 条评论,222人围观)

还没有评论,来说两句吧...

相关阅读

    相关 算法训练 因子去重

    问题描述   给定一个正整数n,求一个正整数p,满足p仅包含n的所有素因子,且每个素因子的次数不大于1 输入格式   一个整数,表示n 输出格式   输出一行,包含一