求一个数的连乘积

Code:
  1. #include <stdio.h>   
  2. #include <math.h>   
  3.   
  4. int main()   
  5. {   
  6.  long left, right;   
  7.  long sum = 1;   
  8.  long GIVEN;   
  9.  scanf("%ld", &GIVEN);   
  10.  int nfind = 0;   
  11.  for (left = right = 2; left < sqrt(GIVEN); ++right)   
  12.  {   
  13.   if (GIVEN %right != 0)   
  14.   {   
  15.    left = right + 1;   
  16.    sum = 1;   
  17.   }   
  18.   else  
  19.   {   
  20.    sum *= right;   
  21.   }   
  22.   while (sum > GIVEN)   
  23.   {   
  24.    sum /= left;   
  25.    ++left;   
  26.   }   
  27.   if (sum == GIVEN)   
  28.   {   
  29.    printf("/n%d -- %d", left, right);   
  30.    nfind = 1;   
  31.   }   
  32.  }   
  33.     
  34.  printf("/n");   
  35.     
  36.  if (!nfind)   
  37.  {   
  38.   printf("%ld没有连乘积可以表示/n", GIVEN);   
  39.  }   
  40.     
  41.  return 0;   
  42. }   
  43. /*  
  44. 210  
  45.  
  46. 5 -- 7  
  47. 14 -- 15  
  48. */  
  49.   
  50. /*  
  51. 10000  
  52.  
  53. 10000没有连乘积可以表示  
  54. */  

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值