例如:我有一个由while循环组成的函数(这个函数会检查质数)
function isprime(int number){
int i=2;
int max= (int) sqrt(number)+1;
while(i<max){
if(number%i==0){
return 0;
}
i++;
}
return 1;
}
Run Code Online (Sandbox Code Playgroud)
我知道这将是一个非常差的测试质数的算法,但我的问题更多地集中在循环上.目前,该函数的第四个操作是"只是"检查条件.对于更大的数字,这可能是非常多的.
(快速示例1:如果"number"是1009,那将检查while条件30次,索引30次操作,if条件检查29*2次.这是118次操作)
我意识到我可以在while条件下剪切和粘贴并使索引通过最大值,同时导致额外的操作,不会伪造返回值.所以,如果我切断从"if ..."到"i ++"的所有内容 并粘贴三(或n)次,检查while条件只占用操作的1/10(或1 /(1 + 3n),同时创建最大+ 2*3(或+(n-1) )*3)不必要的操作.
(快速示例2:如果"number"为1009,则表示检查while条件11次,索引运算33次,if条件运行33*2次.这是100次操作,少了13次)
因为我正在尝试非常大的数字(用非专业术语来说:"条件将在非常非常非常长的时间内是假的")所以将if条件和增量粘贴数千次是有用的,但是非常不切实际 - 所以我的问题是:
是否有一个工具(或我缺少的技术)为我做这个,但保持代码清晰,易于修改?
提前致谢!