连续整数的固定积(C百例)

来源:互联网 发布:pdm软件 编辑:程序博客网 时间:2024/06/05 05:03

给定一个数字,要求把这个数字的连乘积求出来,比如给定了6,结果应该是1~3,给定了20,结果则是4~5。

我解决这个问题的思路和《连续整数的固定和》的思路一样。程序可以把数据类型再改一下,扩大数据范围,因为具有连乘积性质的数字不太多。

#include <iostream>#include<cstdio>#include<cmath>using namespace std;void f(int x){    int i=1,j=2,sum=1;    while(i<=sqrt(x)){        if(sum>=x)break;        else if(sum<x){            for(;j<=x/2+1;j++){                sum*=j;                if(sum==x){                    printf("%d~%d\n",i,j);                    sum/=i;                    i++;                    if(i>sqrt(x))break;                }                else if(sum>x){                    do{                        sum/=i;                        i++;                        if(sum==x){                            printf("%d~%d\n",i,j);                            break;                        }                        else if(sum<x)break;                    }while(i<=sqrt(x)&&sum>x);                }            }        }    }}int main(){    int n;    while(cin>>n){        f(n);    }    return 0;}



0 0
原创粉丝点击