c语言编译1000以内的自守数
时间: 2024-01-08 08:03:36 浏览: 33
以下是C语言编译1000以内的自守数的代码:
#include <stdio.h>
int main() {
int n, m, k, i;
printf("1000以内的自守数有:\n");
for (n = 0; n < 1000; n++) {
m = 0;
k = 1;
for (i = n; i > 0; i /= 10) {
m += (i % 10) * k;
k *= 10;
}
if (n == (m * m) % k) {
printf("%d ", n);
}
}
return 0;
}
该代码使用了循环和条件语句,首先从0到999遍历每个数,然后将每个数的各个位数倒序排列得到m,再计算n的平方对10的位数取余是否等于n本身,如果是则输出该数。
相关问题
用C语言编译出1000以内的阿姆斯特朗数
以下是用C语言编写的程序,可以输出1000以内的阿姆斯特朗数:
```
#include <stdio.h>
#include <math.h>
int main()
{
int num, originalNum, remainder, n = 0, result = 0;
for(num = 1; num <= 1000; num++)
{
originalNum = num;
while(originalNum != 0)
{
originalNum /= 10;
++n;
}
originalNum = num;
while(originalNum != 0)
{
remainder = originalNum % 10;
result += pow(remainder, n);
originalNum /= 10;
}
if(result == num)
{
printf("%d ", num);
}
n = 0;
result = 0;
}
return 0;
}
```
程序的思路是:依次遍历1到1000之间的数,分别计算每个数的位数和每个位上数字的n次方之和,如果等于该数本身,则该数是阿姆斯特朗数,将其输出。
用C语言编译出1000以内三位数的阿姆斯特朗数
以下是用C语言编写的程序,可以输出1000以内的三位数阿姆斯特朗数:
```
#include <stdio.h>
#include <math.h>
int main()
{
int num, originalNum, remainder, n = 0, result = 0;
for(num = 100; num <= 999; num++)
{
originalNum = num;
while(originalNum != 0)
{
originalNum /= 10;
++n;
}
originalNum = num;
while(originalNum != 0)
{
remainder = originalNum % 10;
result += pow(remainder, n);
originalNum /= 10;
}
if(result == num)
{
printf("%d ", num);
}
n = 0;
result = 0;
}
return 0;
}
```
与上一个程序不同的是,这个程序遍历的数只有三位数,因此将遍历的范围限定在100到999之间即可。