本帖最后由 ryxcaixia 于 2015-8-18 10:29 编辑
心血来潮 不说话 直接上代码
楼主如果是交作业 把这个交上去吧 绝对是提升逼格的利器#include <stdio.h>
inline bool IsPrimer(int num)
{
assert(num > 1);
for (int i = 2; i != num; i++)
if (num % i == 0)
return false;
return true;
}
// 判断是否为素数, Win32裸体汇编
__declspec(naked) int IsPrimerNum(int x)
{
__asm
{
MOV EBX, 2
MOV EAX, [ESP+4]
MOV ECX, [ESP+4]
S0:
CMP [ESP+4], EBX
JE S2
XOR EDX, EDX
DIV EBX
TEST EDX, EDX
JZ S1
INC EBX
MOV EAX, [ESP+4]
LOOP S0
S1:
XOR EAX, EAX
RET
S2:
MOV EAX, 1
RET
}
}
int main(void)
{
time_t start = clock();
for (int i = 100; i <= 2000; i++)
if (IsPrimer(i))
printf("%d\n", i);
time_t cost1 = clock() - start;
start = clock();
for (int i = 100; i != 2000; i++)
if (IsPrimerNum(i))
printf("%d\n", i);
time_t cost2 = clock() - start;
printf("cost1 = %d\n", cost1);
printf("cost2 = %d\n", cost2);
return 0;
}
速度提升个7 8倍不是问题
|