C语言求助 题目 求第1500个只有2,3,5因子的数 数是从小到大排列 第一个数是1,1=2^0

C语言求助题目求第1500个只有2,3,5因子的数数是从小到大排列第一个数是1,1=2^0*3^0*5^0。希望给的是原创好的加分谢谢... C语言求助 题目 求第1500个只有2,3,5因子的数 数是从小到大排列 第一个数是1,1=2^0*3^0*5^0。希望给的是原创 好的加分 谢谢 展开
 我来答
z84616995z
推荐于2018-03-28 · TA获得超过354个赞
知道小有建树答主
回答量:258
采纳率:45%
帮助的人:116万
展开全部
#include <iostream>

using namespace std;

int POW(int x)

{

   while(x!=1)

   {

    if (x%2==0)

    {

     x/=2;

    }

    else if (x%3==0)

    {

     x/=3;

    }

    else if (x%5==0)

    {

     x/=5;

    } 

    else

    {

     return 0;

    }

   }

   return 1;

}

void main()

{

 for (int i=1,j=1;j<=1500;i++)

 {

    if (POW(i))

    {

     j++;

     cout<<i<<" ";

    }

 }

}
已调试好了。 最后一个数就是第1500个符合题意的。
更多追问追答
追问
能不能麻烦你稍微改下 我目前只学的C预言 没有接触C++
追答
#include <stdio.h>

int POW(int x)

{

   while(x!=1)

   {

    if (x%2==0)

    {

     x/=2;

    }

    else if (x%3==0)

    {

     x/=3;

    }

    else if (x%5==0)

    {

     x/=5;

    } 

    else

    {

     return 0;

    }

   }

   return 1;

}

void main()

{

 for (int i=1,j=1;j<=1500;i++)

 {

    if (POW(i))

    {

     j++;

     printf("%d ",i);

    }

 }

}
//这样可以了吧?
lisaziho
2014-09-26 · TA获得超过405个赞
知道小有建树答主
回答量:537
采纳率:0%
帮助的人:301万
展开全部
void main()
{
int i,j,k,n=0,s=0;
for(k=0;;k++){
for(j=0;;j++){
for(i=0;;i++){
s=2^i*3^j*5^k;
n++;
printf("第%d个数=%d\n",n,s);
if(n>1500)
break;
}
if(n>1500)
break;
}
if(n>1500)
break;

}
printf("第1500个数=%d\n",s);
// return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
万恶小C
2014-09-26 · TA获得超过107个赞
知道小有建树答主
回答量:232
采纳率:0%
帮助的人:159万
展开全部

先提醒一点,你这个都是乘法的话第1500个已经超过了int32

这个问题很复杂,因为2^3*3^0*5^0=8,但2^0*3^1*5^1=15,所以不能光从数量上去判断他们的大小,所以这是一个非常确定的问题,解决这个问题不能通过常规手段来实现,只能通过大数据的枚举然后排序来实现

 static void Main(string[] args)
        {           
            Program p = new Program();
            int[] arr;
            int[] rst=new int[10000];
            int n = 0;
            arr = p.getarr(5, 5, 5
                );
            Array.Sort(arr);
            for (int i = 0; i < arr.Length-1; i++)
            {
                for ( int j = 1; j < arr.Length - i-1; j++)
                {
                    if (arr[i + j] == arr[i])
                    {
                        arr[i + j] = 0;
                    }
                }
            }
            for (int k = 0; k < arr.Length; k++)
            {
                if (arr[k] != 0)
                {
                    rst[n] = arr[k];
                    n++;
                }
            }
            Console.WriteLine(rst[100]);
            Console.Read();
            
        }

       public int[] getarr(int i,int j ,int k)
        {
         
            int n = 0;
           int s=i*j*k;
            int[] arr=new int[s];
            for(int a=0;a<i;a++)
                for(int b=0;b<i;b++)
                    for (int c = 0; c < i; c++)
                    {
                        arr[n] = Convert.ToInt32(Math.Pow(2, a) * Math.Pow(3, b) * Math.Pow(5, c));
                        n++;
                    }
            return arr;
        }

这是我的代码,因为你的1500实在太大,我选择输出第100个,结果是13500

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
尼见
2014-09-26 · TA获得超过304个赞
知道小有建树答主
回答量:143
采纳率:0%
帮助的人:54万
展开全部
请给出前四个例子,以方便理解题意。
追问
1=2^0*3^0*5^0   2=2^1*3^0*5^0
3=2^0*3^1*5^0
4=2^2*3^0*5^0
应该是这个意思
求解答阿大神
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
509964645
推荐于2017-12-16 · TA获得超过245个赞
知道小有建树答主
回答量:210
采纳率:0%
帮助的人:143万
展开全部
//来bug了,要工作了,没帮你调试过,思路应该看得懂吧,自己调试一下
void test1()
{
int n = 0;
unsigned int value,temp_val;
int flag = 0;
value = 1;
while(1)
{
temp_val = value;
while(1)
{
if(0 != value%2 && 0 != value%3 && 0 != value%5)
{
flag = 0;
break;
}
if(0 == value%2)
{
value = value/2;
if(1 == value)
{
flag = 1;
break;
}
}
if(0 == value%3)
{
value = value/3;
if(1 == value)
{
flag = 1;
break;
}
}
if(0 == value%5)
{
value = value/5;
if(1 == value)
{
flag = 1;
break;
}
}
}
value++;
if(1 == flag)
{
n++;
printf("%d \n",temp_val);
if(1500 == n)
{
break;
}
}
}
}
更多追问追答
追问
大概明白思路了 先谢谢拉
unsign int value,temp_val
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式