genprim.c
上傳用戶:zhengman1
上傳日期:2007-03-19
資源大小:23k
文件大小:1k
源碼類別:

加密解密

開發平臺:

C/C++

  1. /*******************************************************************************
  2. *        *
  3. * Copyright (c) Martin Nicolay,  22. Nov. 1988        *
  4. *        *
  5. * Wenn diese (oder sinngemaess uebersetzte) Copyright-Angabe enthalten   *
  6. * bleibt, darf diese Source fuer jeden nichtkomerziellen Zweck weiter    *
  7. * verwendet werden.        *
  8. *        *
  9. * [email protected]        *
  10. *        *
  11. *******************************************************************************/
  12. #include <stdio.h>
  13. #include "arith.h"
  14. #include "prim.h"
  15. #include "nio.h"
  16. #include "rnd.h"
  17. char *prog;
  18. NUMBER a_three,a_four;
  19. usage()
  20. {
  21. fprintf(stderr,"usage: %s digits [probability]n",prog);
  22. exit (1);
  23. }
  24. main( argc, argv )
  25. char **argv;
  26. {
  27. NUMBER prim;
  28. int len,i,prob;
  29. prog = argv[0];
  30. if ( argc < 2 || 3 < argc )
  31. usage();
  32. len = atoi( argv[1] );
  33. if (argc > 2)
  34. prob = atoi( argv[2] );
  35. else
  36. prob = 10;
  37. a_add( &a_one, &a_two, &a_three );
  38. a_add( &a_two, &a_two, &a_four );
  39. init_rnd();
  40. do {
  41. gen_number( len, &prim );
  42. } while ( !prim.n_len );
  43. a_mult( &prim, &a_two, &prim );
  44. a_mult( &prim, &a_three, &prim );
  45. a_add( &prim, &a_one, &prim );
  46. for (i=1 ;; i++) {
  47. if (p_prim( &prim, prob ))
  48. break;
  49. if (i % 2)
  50. a_add( &prim, &a_four, &prim );
  51. else
  52. a_add( &prim, &a_two, &prim );
  53. }
  54. fprintf(stderr,"%d cyclesn",i);
  55. num_fput( &prim, stdout );
  56. }
黑龙江省22选5