|
发表于 2015-8-18 10:23:56
|
显示全部楼层
本帖最后由 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倍不是问题
|
评分
-
查看全部评分
|