加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

完数求解程序(Fortran版)

(2016-01-27 20:50:43)
标签:

it

fortran

分类: 编程
输出:1000以内的所有完全数(perfect number)


示例代码:

主程序
!
!-------------------------------    
  
  program main
    implicit none
    integer(kind=4),parameter :: N=1000
    integer(kind=4) :: i,j,sum
    character(len=100) :: num
    
    print*,' '
    print*,"输出1000以内的所有完数:"
    write(*,'(/)')
    
    do i=2,N,1
        sum=0
        do j=1,i,1
            if(j

                if(mod(i,j)==0) sum=sum+j
            end if
        end do
        if(sum==i) print*,i 
    end do 
    
    
  
  !...以完数等于因子之和的形式输出
    open(unit=1,file="完全数输出.txt")
    print*,' '
    do i=2,N,1
        sum=0
        do j=1,i,1
            if(j

                if(mod(i,j)==0) sum=sum+j
            end if
        end do
        if(sum==i) then
            write(num,*)          
            !write(*,*)   ',trim(adjustl(num)),'='
            write(*,'(A5,\)')   ',trim(adjustl(num)),'='
            write(1,'(A5,\)')   ',trim(adjustl(num)),'='
            do j=1,i,1
                if(j
                    if(mod(i,j)==0) then
                        write(num,*) j
                        if(j==1) then 
                            !write(*,*) trim(adjustl(num)) 
                            write(*,"(A5,\)") trim(adjustl(num))
                            write(1,"(A5,\)") trim(adjustl(num))
                        else
                            !write(*,*) '+',trim(adjustl(num))
                            write(*,'(A5,\)') '+',trim(adjustl(num))
                            write(1,'(A5,\)') '+',trim(adjustl(num))
                        end if
                    end if
                end if
            end do  
            print*,' '
        end if
    end do 
    close(1)
    
    write(*,'(/)')
    stop   *** Over ***   '
    end program main


结果输出:

输出1000以内的所有完数:


           6
          28
         496

         6    =    1    +    2    +    3
        28    =    1    +    2    +    4    +    7    +   14
       496    =    1    +    2    +    4    +    8    +   16    +   31    +   62    +  124    +  248


   *** Over ***
请按任意键继续. . .

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有