我已经编写了这段代码,用于计算正除数之和,所有值必须为a的幂。
例如:
System.out.println("Get blob metadata:");
HashMap<String, String> metadata = blob.getMetadata();
Iterator it = metadata.entrySet().iterator();
while (it.hasNext()) {
Map.Entry pair = (Map.Entry) it.next();
System.out.printf(" %s = %s%n", pair.getKey(), pair.getValue());
it.remove();
}
我尝试了不同的版本,但是我不知道如何添加幂函数。
sigma(0,14) = 1^0 + 2^0 + 7^0 + 14^0 = 4;
sigma(2,12) = 1^2 + 2^2 + 3^2 + 4^2 + 6^2 + 12^2 = 210.
sigma(a, b).
答案 0 :(得分:2)
在Java中,blob.upload_from_string(file_stream, content_type=content_type)
字符表示XOR。
Math.pow()
方法提供了^
函数。
因此power
将是3^2
。
如果您想自己为整数实现它,则可以像这样简单地完成它:
Math.pow(3, 2)
但是我不会自己做。对于浮点数,它变得更加复杂,并且Java具有本机底层实现,该实现要快得多。
答案 1 :(得分:2)
IntStream
提供了简洁明了的计算。
static int sigma(int exp, int num) {
IntStream.rangeClosed(1, num) // 1, ..., num
.filter(k -> num % k == 0) // Only divisors
.map(k -> pow(k, exp))
.sum();
}
static int pow(int k, int exp) {
if (exp == 0) {
return 1;
}
int squareRoot = pow(k, exp/2);
int n = squareRoot * squareRoot;
return (exp % 2) == 0 ? n : n*k;
}
可以通过不使用exp
的{{1}}#个乘法,而是使用平方根来优化功效计算。
对于那些对程序转换感兴趣的人:
k
仅需要依靠pow(k, exp)
递归到exp / 2(整数除法)。这样一来,您就可以将代码完全翻过来,拥有除数向量,
并对此进行操作。
答案 2 :(得分:0)
如果您想不使用Math.pow()
来实现它,则可以简单地遵循exponentiation的数学定义以获得正指数:
public static long exp(int a, int b){ //computes a^b
long result = 1;
for (int i = 0; i < b; i++) {
result *= a;
}
return result;
}
答案 3 :(得分:0)
我建议您使用Java lambda来完成所需的工作。
接受输入并返回正除数列表本身似乎很有用。
使用lambda可以轻松完成提高每项能力的任务。
将两个功能分开。采取更实用的方法。
答案 4 :(得分:0)
这是为您准备的简单代码:
public static void main(String args[]) {
Scanner scanner = new Scanner(System.in);
List<Integer> listOfBs = new ArrayList<>();
System.out.println("Input your a");
int a = scanner.nextInt();
System.out.println("Input your b");
int b = scanner.nextInt();
int sqrt = (int) Math.sqrt(b);
for (int i = 1; i <= sqrt; i++) {
if (b % i == 0) {
listOfBs.add(i);
int d = b / i;
if (d != i) {
listOfBs.add(d);
}
}
}
int sigma = 0;
for(int e : listOfBs)
{
sigma += Math.pow(e,a);
}
System.out.println("Your sigma function is: "+sigma);
}
}