[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] C运行速度快批处理好多啊!(计算1000以内质数)

本帖最后由 Gin_Q 于 2019-12-14 11:43 编辑

先是批处理的:
  1. @echo off & setlocal enabledelayedexpansion
  2. set time_sta=%time%
  3. set /p count=1000
  4. for /l %%a in (2,1,%count%) do (if %%a GTR 2 (set /a temp=%%a-1)
  5. set /a is_prime=1
  6. for /l %%b in (2,1,!temp!) do (
  7. set /a temp1=%%a%%%%b
  8. if !temp1! EQU 0 ( set /a is_prime = 0 ))
  9. if !is_prime! EQU 1 (echo %%a是一个质数!
  10. >>te1.txt echo %%a是一个质数!& set /a sum+=1
  11. ) else (echo %%a是一个合数!
  12. >>te1.txt echo %%a是一个合数!& set /a sum_1+=1))
  13. echo;质数有%sum%个
  14. >>te1.txt echo 质数有%sum%个
  15. echo;合数有%sum_1%个
  16. >>te1.txt echo 合数有%sum_1%个
  17. echo;开始时间为%time_sta%
  18. echo;结束时间为%time%
  19. pause & exit
复制代码
结果:
2是一个质数!
3是一个质数!
...
990是一个合数!
991是一个质数!
992是一个合数!
993是一个合数!
994是一个合数!
995是一个合数!
996是一个合数!
997是一个质数!
998是一个合数!
999是一个合数!
1000是一个合数!
质数有168个
合数有831个
开始时间为11:39:13.91
结束时间为11:39:29.11
请按任意键继续. . .

----------------------------------------------------------分割线---------------------------------------------------------
C:
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int prime(int n)
  4. {
  5. int is_prime = 1, i;
  6. if (n < 0)
  7. {
  8. return -1;
  9. }
  10. for (i=2; i<n; i++)
  11. {
  12. if (n % i == 0)
  13. {
  14. is_prime = 0;
  15. break;
  16. }
  17. }
  18. return is_prime;
  19. }
  20. int main()
  21. {
  22. FILE *fp;
  23. if ((fp = fopen("D:\\GIN\\temp\\te.txt", "w")) == NULL)
  24. {
  25. printf("fail to open file!");
  26. exit(0);
  27. }
  28. int a = 1000, b, i, sum = 0, sum_1 = 0;
  29. //printf("请输入一个整数:");
  30. //scanf("%d", &a);
  31. for (i=2; i<=a; i++)
  32. {
  33. b = prime(i);
  34. if (b == 0)
  35. {
  36. sum++;
  37. printf("%d是一个合数!\n", i);
  38. fprintf(fp, "%d是一个合数!\n", i);
  39. }
  40. else
  41. {
  42. sum_1++;
  43. printf("%d是一个质数!\n", i);
  44. fprintf(fp, "%d是一个质数!\n", i);
  45. }
  46. }
  47. printf("质数有%d个\n", sum_1);
  48. printf("合数有%d个\n", sum);
  49. fprintf(fp,"质数有%d个\n质数有%d个\n", sum_1, sum);
  50. fclose(fp);
  51. return 0;
  52. }
复制代码
结果:
2是一个质数!
3是一个质数!
...
990是一个合数!
991是一个质数!
992是一个合数!
993是一个合数!
994是一个合数!
995是一个合数!
996是一个合数!
997是一个质数!
998是一个合数!
999是一个合数!
1000是一个合数!
质数有168个
合数有831个

--------------------------------
Process exited after 0.1504 seconds with return value 0
请按任意键继续. . .

我是一个新手,好奇就自己写了一下作对比,代码肯定不是最优的(对于我已经是现在能力所及的了)

TOP

回复 1# Gin_Q


    第一次我搞错,两个那个脚本运行时间是包含了我输入数字的时间,后面更新了

TOP

回复 6# xczxczxcz


    大佬,我能力有限呢!(我这个是打印的答案,还保存了一份一摸一样的日志)

TOP

回复 4# codegay

现在还搞不了,大佬!

TOP

返回列表