Closed. This question is off-topic。它当前不接受答案。
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
4年前关闭。
香港专业教育学院在我的程序之一中使用了以下功能。
我试图确保我的代码高效,但是我无法在线找到任何帮助来告诉我如何识别可以改进的地方...
有没有人可以帮助您确定我是否可以改进(更快)或提高运行效率的任何方面
z,s和t都是整数
因此,此函数的总体功能是将z乘以s的幂,然后每次将其修改为n。非常简单,但是我无法弄清楚如何使它更快,因为它将被主程序使用100或1000次
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
4年前关闭。
香港专业教育学院在我的程序之一中使用了以下功能。
我试图确保我的代码高效,但是我无法在线找到任何帮助来告诉我如何识别可以改进的地方...
有没有人可以帮助您确定我是否可以改进(更快)或提高运行效率的任何方面
z,s和t都是整数
powerMod(z, s, t) {
int temp = 1;
while (s > 0) {
temp = temp * z;
s = s - 1;
}
temp = temp mod t;
return temp;
}
因此,此函数的总体功能是将z乘以s的幂,然后每次将其修改为n。非常简单,但是我无法弄清楚如何使它更快,因为它将被主程序使用100或1000次
最佳答案
像这样吗?
使用exponentiation by square和ive使用很长时间,以防由于int * int而导致溢出。
int powMod(int z, int s, int t){
long result = 1; //int * int will never exceed the size of a long
long multiplicant = z;
while(s > 0){
if(s % 2 == 1) {
result *= multiplicant;
result %= t; // do modulo on each temporary result to keep accuracy
}
multiplicant *= multiplicant;
multiplicant %= t;
s /= 2;
}
return result;
}
关于java - Java有效地改进代码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27526979/
10-12 23:55