Fortran Coder

查看: 5299|回复: 3
打印 上一主题 下一主题

[通用算法] 用FORTRAN语言编译两个子函数,关于任意一个自然数的位数..

[复制链接]

1963

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1357 元
贡献
574 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

楼主
发表于 2014-11-4 10:37:12 | 显示全部楼层
表示看不懂。如果文字表述有困难,可以写在 word 里,截图也好,上传doc文件也好。

1963

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1357 元
贡献
574 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

沙发
发表于 2014-11-4 11:15:54 | 显示全部楼层
排了排版,差不多了解了。除了那个 txt 文件之外。

这可能是你想要的代码

[Fortran] 纯文本查看 复制代码
Program www_fcode_cn
  Implicit None
  Integer , parameter :: KI = SELECTED_INT_KIND(10)
  write(*,*) fp( 1234567890_ki ) , fq( 1234567890_ki )
  
contains
  
  Integer(Kind=KI) Function fp( n )
    Integer(Kind=KI) :: n
    integer(Kind=KI) :: t
    integer :: k , i
    integer , allocatable :: c(:)
    t = n
    k = 1
    do
      if ( t < 10 ) exit
      t = t/10
      k = k + 1      
    end do
    allocate( c(k) )
    t = n
    do i = 1 , k
      c(i) = mod( t , 10 )
      t = t/10
    end do
    t = 0
    do i = 1 , k
      t = t + c(i)**(i-1)
    end do    
    fp = n - t
  End Function fp
  
  Integer(Kind=KI) Function fq( n )
    Integer(Kind=KI) :: n
    integer(Kind=KI) :: t
    integer :: k , i , tq
    integer , allocatable :: c(:) , q(:)
    t = n
    k = 1
    do
      if ( t < 10 ) exit
      t = t/10
      k = k + 1      
    end do
    allocate( c(k) , q(k) )
    t = n
    tq = 0
    do i = 1 , k
      c(i) = mod( t , 10 )
      t = t/10
      if ( mod(c(i),2)== 0 ) tq = tq + 1
      q(i) = tq
    end do
    t = 0
    do i = 1 , k
      t = t + q(i)**(i-1)
    end do    
    fq = n - t
  End Function fq
  
End Program www_fcode_cn
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-6 22:26

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表