JAVA素因子只有3 5 7_有些数的素因子只有3,5,7.请设计一个算法,找出其中第k个数...

该博客介绍了一种JAVA算法,用于寻找第k个只包含素因子3、5和7的数。通过使用队列数据结构,不断移除并添加新的数来迭代计算,最终找到目标值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1758c16bb60b43d0a021a9d9.html

1758c16bb60b43d0a021a9d9.html

1758c16bb60b43d0a021a9d9.html

public static int removeMin(Queue q)

{

int min=q.peek();

for(Integer v:q)

{

if(min>v)

min=v;

}

while(q.contains(min))

{

q.remove(min);

}

return min;

}

public static void  addProducts(Queue q,int v)

{

q.add(v*3);

q.add(v*5);

q.add(v*7);

}

public static int getKthMagicNumber(int k)

{

if(k<0) return 0;

int val=1;

Queue q=new LinkedList();

addProducts(q,1);

for(int i=0;i

{

val=removeMin(q);

addProducts(q,val);

}

return val;

}队列

1758c16bb60b43d0a021a9d9.html

1758c16bb60b43d0a021a9d9.html

1758c16bb60b43d0a021a9d9.html

1758c16bb60b43d0a021a9d9.html

public static int getKthMagicNumber(int k)

{

if(k<0)

{

return 0;

}

int val=0;

Queue queue3=new LinkedList();

Queue queue5=new LinkedList();

Queue queue7=new LinkedList();

queue3.add(1);

//从0到K的迭代

for(int i=0;i<=k;i++)

{

int v3=queue3.size()>0?queue3.peek():Integer.MAX_VALUE;

int v5=queue5.size()>0?queue5.peek():Integer.MAX_VALUE;

int v7=queue7.size()>0?queue7.peek():Integer.MAX_VALUE;

val=Math.min(v3,Math.min(v5,v7));

if(val==v3)

{

queue3.remove();

queue3.add(3*val);

queue5.add(5*val);

}

else if(val==v5)

{

queue5.remove();

queue5.add(5*val);

}

else if(val==v7)

{

queue7.remove();

}

queue7.add(7*val);//老是放入队列7

}

return val;

}rem

1758c16bb60b43d0a021a9d9.html

1758c16bb60b43d0a021a9d9.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值