zoukankan      html  css  js  c++  java
  • 一个糟糕的Erlang练习题

    好吧,用的语法很糟糕。。。但是至少是做了练习。

    题目

    %The sequence of triangle numbers is generated by adding the natural numbers. So the 7th triangle number would be 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28. The first ten terms would be:
    %1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ...
    %Let us list the factors of the first seven triangle numbers:
    %
    % 1: 1
    % 3: 1,3
    % 6: 1,2,3,6
    %10: 1,2,5,10
    %15: 1,3,5,15
    %21: 1,3,7,21
    %28: 1,2,4,7,14,28
    %We can see that 28 is the first triangle number to have over five divisors.
    
    %What is the value of the first triangle number to have over five hundred divisors?

    好吧,我先写了个module,用来计算triangle num:

    -module(triangle).
    -export([triNum/1]).
    
    triNum(0) -> 0;
    triNum(N) ->
        N + triNum(N-1).

    然后,我写了个module,来计算具体某个数有多少个triNum:

    -module(divisor).
    -export([num_of_divisor/2]).
    
    num_of_divisor(_, 0) -> 0;
    num_of_divisor(Num, Factor) when (Num rem Factor) =:= 0 ->
        2 + num_of_divisor(Num, Factor - 1);
    num_of_divisor(Num, Factor) when (Num rem Factor) =/= 0 ->
        num_of_divisor(Num, Factor-1).

    好吧,然后,我又用了第三个module:

    -module(forRange).
    -export([forRange/1]).
    -import(triangle, [triNum/1]).
    -import(divisor, [num_of_divisor/2]).
    
    forRange(0) -> 0;
    forRange(N) when N>0 ->
        TriNum = triNum(N),
        Res = num_of_divisor(TriNum, TriNum)/2,
        if 
        Res >= 100 ->
            io:format("~f~n", [Res]),
            io:format("~b~n", [N]);
        true ->
            io:format("~n")
        end,
        
        forRange(N-1).

    。。。

    最后数找到了384,我还给自己找了个冠冕堂皇的接口,我还在熟悉语法。。。

  • 相关阅读:
    爬虫防止浏览器防止debug处理
    php
    代码日记
    Linux定时任务
    Linux 三剑客(Awk、Sed、Grep)
    golang中使用ETCD
    golang中使用mysql数据库
    golang中使用Redis
    Linux进阶知识和命令
    Linux核心命令使用方法
  • 原文地址:https://www.cnblogs.com/pied/p/3677587.html
Copyright © 2011-2022 走看看