下面是我生成Armstrong numbers的简单尝试。但它只输出"1“。可能出了什么问题?
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
int main()
{
clrscr();
int r;
long int num = 0, i, sum = 0, temp;
cout << "Enter the maximum limit to generate Armstrong number ";
cin >> num;
cout << "Following armstrong numbers are found from 1 to " << num << "\t \n";
for(i=1;i<=num;i++)
{
temp = i;
while( temp != 0 )
{
r = temp%10;
sum = sum + r*r*r;
temp = temp / 10;
}
if ( i == sum ) {
cout << i;
sum = 0;
}
}
getch();
return 0;
}发布于 2011-07-19 20:12:06
您需要始终在for-i循环中设置sum = 0。
发布于 2011-07-19 20:10:51
Armstrong数:n位数,等于其数字的n次方和。
从你的代码中
sum = sum + r*r*r;“r*r*r”不是数字的n次方。
发布于 2011-07-19 20:14:05
您可以使用log来计算n:
n = log(i)+1然后正确计算r^n并在求和中使用它:sum += r^n;。r*r*r不是计算它的正确方法。
https://stackoverflow.com/questions/6746838
复制相似问题