算法-ARMSTRONG数
在三位的正整数中,例如abc,有一些可以满足a3 + b3 + c3 = abc的条件(a3表示a的三次方),也就是说各位的立方和正好是该数的本身,这样的数称为armstrong数,试求出所有的三位armstrong数,需要考虑效率问题。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
在三位的正整数中,例如abc,有一些可以满足a3 + b3 + c3 = abc的条件(a3表示a的三次方),也就是说各位的立方和正好是该数的本身,这样的数称为armstrong数,试求出所有的三位armstrong数,需要考虑效率问题。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(2)
/**
* @author Administrator
* 我觉得这题没有什么能提高效率的地方
* 最多添加一个过滤的方法,以减少计算幂的次数
* (a+b+c)^3>abc
*/
public class Test2 {
public static void main(String args[]) {
for(int i=1;i<10;i++)
for(int j=0;j<10;j++)
for(int n=0;n<10;n++)
{
int h=i*100+j*10+n;
if(Math.pow(i+j+n,3)>h)//(a+b+c)^3>abc
if(Math.pow(i,3)+Math.pow(j,3)+Math.pow(n,3)==h)
System.out.println(i+"^3+"+j+"^3+"+n+"^3="+h);
}
}
}
之前算水仙花数的时候都是穷举三位数,不知道有没有更好的方法,先将贴下穷举的方法:
for($i=100;$i<1000;$i++) {
$b = intval($i/100);
$s = intval(($i % 100)/10);
$g = $i%100 - $s*10;
if(pow($b,3)+pow($s,3)+pow($g,3) == $i) {
echo $i,"n";
}
}
//或
for($i = 1;$i<10;$i++) {
for($j=0;$j<10;$j++) {
for($k=0;$k<10;$k++) {
$n = $i*100 + $j*10 + $k;
if(pow($i,3)+pow($j,3)+pow($k,3) == $n) {
echo $n,"n";
}
}
}
}