如何将函数x中的值用于函数y中的构造函数

时间:2019-05-27 03:31:32

标签: java cryptography biginteger

我有一个函数NodeTransitionFunction(Integer exp,Integer KVal),需要计算f(x)=(x ^ exp)%KVal。

然后有一个函数Integer apply(Integer val)需要计算f(val)。

现在要设置NodeTransitionFunction的构造函数,如何从apply函数中获取参数val?

还是我完全试图以错误的方式解决这个问题?

public class NodeTransitionFunction {

    public NodeTransitionFunction(Integer exp, Integer KVal) {
        // CONSTUCTOR: Sets the class to calculate f(x) = (x ^ exp) mod KVal 

        // TODO
    }

    public Integer apply(Integer val) {
        // PRE: -
        // POST: Implements f(val)
        // TODO

        return null;
    }

    public static void main(String[] args) {
        NodeTransitionFunction f = new NodeTransitionFunction(3, 33);

        System.out.println(f.apply(5));
    }

}

1 个答案:

答案 0 :(得分:0)

我认为您要问的是如何将函数传递给构造函数,以便以后可以应用。如果是这种情况,您实际上根本不需要一个类:您定义的是IntUnaryOperator-即一个接受一个int并返回一个int的函数。

所以:

IntUnaryOperator makeNodeTransitionFunction(double exp, double mod) {
    return x -> Math.round(Math.mod(Math.power(x, exp), mod));
}

然后将其应用为:

makeNodeTransitionFunction(7, 11).apply(5)

如果需要将其放在类中,则可以将IntUnaryOperator设为在构造函数中分配的私有字段。然后,apply方法将只委托给该字段。