请给出一个搜索39位的水仙花数的代码,最好是fortran的。
时间: 2023-08-31 19:20:36 浏览: 66
### 回答1:
以下是Fortran程序来搜索39位的水仙花数:
```
program narcissistic_numbers
implicit none
integer :: i, j, k, n
integer, dimension(39) :: digits
integer(kind=8) :: num, sum
do i=1,9
digits(1) = i
num = digits(1)
do j=0,9
digits(2) = j
num = num*10 + digits(2)
do k=0,9
digits(3) = k
num = num*10 + digits(3)
sum = i**3 + j**3 + k**3
if (sum == num) then
write(*,*) 'Narcissistic number found:', num
end if
num = num/10
end do
num = num/10
end do
end do
end program narcissistic_numbers
```
这个程序使用三个循环来生成所有可能的三位数,并检查它们是否是水仙花数。在每个循环中,它将数字添加到一个整数数组中,然后将数组中的数字组合成一个整数。它还计算该整数是否是水仙花数。如果是,它将其输出到控制台。
### 回答2:
以下是一个使用Fortran语言编写的搜索39位水仙花数的代码:
```fortran
program narcissistic_numbers
implicit none
integer :: number, temp, sum, digit, power
integer :: i, j, k, count
count = 0
do i = 1000000000000000000, 9999999999999999999
number = i
temp = i
sum = 0
! 计算数位数
digit = 0
do while (temp > 0)
temp = temp / 10
digit = digit + 1
end do
! 计算每位数字的power阶次之和
temp = number
do j = 1, digit
power = 1
do k = 1, digit
power = power * (temp - mod(temp, 10))
temp = temp / 10
end do
sum = sum + power
end do
! 判断是否为水仙花数
if (sum == number) then
write(*,*) number
count = count + 1
endif
! 当找到39个水仙花数时,退出循环
if (count == 39) then
exit
endif
end do
end program narcissistic_numbers
```
这个程序使用一个嵌套的循环来搜索39位的水仙花数。首先,使用一个循环来遍历从1000000000000000000到9999999999999999999的所有可能的39位数。然后,对于每个数,计算其每位数字的阶次之和,然后与原数进行比较。如果它们相等,则将其打印出来,并递增计数器。当找到39个水仙花数时,程序将退出循环。
### 回答3:
以下是一个使用Fortran编写的搜索39位水仙花数的代码:
```fortran
program NarcissisticNumbers
implicit none
integer :: number, i, temp, sum, digit
logical :: isNarcissistic
do number = 1000000000000000000000000000000000000000, 9999999999999999999999999999999999999999, -1
temp = number
sum = 0
isNarcissistic = .false.
do i = 1, 39
digit = mod(temp, 10)
sum = sum + digit**39
temp = temp / 10
end do
if (sum == number) then
isNarcissistic = .true.
write(*,*) '39位水仙花数: ', number
end if
end do
end program NarcissisticNumbers
```
该代码使用了一个循环,从 999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,999,依次递减至100,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000。
在每次迭代中,将当前数字存储在temp变量中并计算其各个位数的39次幂之和。如果该和等于原始数字,则该数字为39位水仙花数。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_lunwen.png)
![-](https://csdnimg.cn/download_wenku/file_type_lunwen.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)