当前位置:   article > 正文

素数合集(C语言版)

素数合集(C语言版)

目录

判断素数函数

题目

素数个数

素数求和 

最大的素数

孪生素数

默尼森素数


判断素数函数

  1. int prime(int n)
  2. {
  3. if(n<=1)
  4. {
  5. return 0;
  6. }else{
  7. int flag=1;
  8. for(int i=2;i<=sqrt(n);i++)
  9. {
  10. if(n%i==0)
  11. {
  12. flag=0;
  13. break;
  14. }
  15. }
  16. if(flag==1)
  17. {
  18. return 1;
  19. }else{
  20. return 0;
  21. }
  22. }
  23. }

题目

素数个数

编程求2~n(n为大于2的正整数,且小于等于50000)中有多少个素数。

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <math.h>
  5. #include <stdbool.h>
  6. #define m 10
  7. int prime(int n)
  8. {
  9. if(n<=1)
  10. {
  11. return 0;
  12. }else{
  13. int flag=1;
  14. for(int i=2;i<=sqrt(n);i++)
  15. {
  16. if(n%i==0)
  17. {
  18. flag=0;
  19. break;
  20. }
  21. }
  22. if(flag==1)
  23. {
  24. return 1;
  25. }else{
  26. return 0;
  27. }
  28. }
  29. }
  30. int main()
  31. {
  32. int n;
  33. scanf("%d",&n);
  34. int s=0;
  35. for(int i=2;i<=n;i++)
  36. {
  37. if(prime(i)==1)
  38. {
  39. s++;
  40. }
  41. }
  42. printf("%d",s);
  43. return 0;
  44. }

素数求和 

给定n(n≤100)个正整数,所有正整数均≤1000000;求其中所有素数的和。

  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <math.h>
  4. #include <stdbool.h>
  5. #define max 101
  6. int prime(int n)
  7. {
  8. if(n<=1)
  9. {
  10. return 0;
  11. }else{
  12. int flag=1;
  13. int i;
  14. for(i=2;i<=sqrt(n);i++)
  15. {
  16. if(n%i==0)
  17. {
  18. flag=0;
  19. break;
  20. }
  21. }
  22. if(flag==1)
  23. {
  24. return 1;
  25. }else{
  26. return 0;
  27. }
  28. }
  29. }
  30. int main()
  31. {
  32. int n;
  33. scanf("%d",&n);
  34. int s=0;
  35. int a[max]={};
  36. for(int i=0;i<n;i++)
  37. {
  38. scanf("%d",&a[i]);
  39. if(prime(a[i])==1)
  40. {
  41. s+=a[i];
  42. }
  43. }
  44. printf("%d",s);
  45. return 0;
  46. }

最大的素数

给定n(n≤100)个正整数,所有正整数均≤100,000;求其中最大的那个素数。题目保证至少有一个素数。

  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <math.h>
  4. #include <stdbool.h>
  5. #define max 101
  6. int prime(int n)
  7. {
  8. if(n<=1)
  9. {
  10. return 0;
  11. }else{
  12. int flag=1;
  13. int i;
  14. for(i=2;i<=sqrt(n);i++)
  15. {
  16. if(n%i==0)
  17. {
  18. flag=0;
  19. break;
  20. }
  21. }
  22. if(flag==1)
  23. {
  24. return 1;
  25. }else{
  26. return 0;
  27. }
  28. }
  29. }
  30. int main()
  31. {
  32. int n;
  33. scanf("%d",&n);
  34. int a[max]={};
  35. int b[max]={};
  36. int i,j=0;
  37. for(i=0;i<n;i++)
  38. {
  39. scanf("%d",&a[i]);
  40. if(prime(a[i])==1)
  41. {
  42. b[j]=a[i];
  43. j++;
  44. }
  45. }
  46. int m=b[0];
  47. for(i=0;i<j;i++)
  48. {
  49. if(m<b[i])
  50. {
  51. m=b[i];
  52. }
  53. }
  54. printf("%d",m);
  55. return 0;
  56. }

孪生素数

孪生素数是指两个素数的差值刚好是2,比如3和5,5和7,11和13都是孪生素数。19和23不是孪生素数。
根据题目给定的范围【n,m】,求出其中的孪生素数并输出。如果范围内有多对孪生素数,输出最小的那对。如果没有孪生素数,则输出“none”

  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <math.h>
  4. #include <stdbool.h>
  5. int prime(int n)
  6. {
  7. if(n<=1)
  8. {
  9. return 0;
  10. }else{
  11. int flag=1;
  12. int i;
  13. for(i=2;i<=sqrt(n);i++)
  14. {
  15. if(n%i==0)
  16. {
  17. flag=0;
  18. break;
  19. }
  20. }
  21. if(flag==1)
  22. {
  23. return 1;
  24. }else{
  25. return 0;
  26. }
  27. }
  28. }
  29. int main()
  30. {
  31. int m,n;
  32. scanf("%d%d",&m,&n);
  33. int i,count=0;
  34. for(i=m;i<=n-2;i++)
  35. {
  36. if(prime(i)&&prime(i+2))
  37. {
  38. printf("%d %d",i,i+2);
  39. count=1;
  40. break;
  41. }
  42. }
  43. if(count==0)
  44. {
  45. printf("none");
  46. }
  47. return 0;
  48. }

默尼森素数

默尼森素数是指形如:M=2p-1 的公式,其中p和M都是素数,M就被称为默尼森素数。

给定一个正整数p(2≤p≤100),按照上面的公式求出M,并判断M是否为默尼森素数。如果是,输出"YES",否则输出“NO”。

  1. #include <stdio.h>
  2. #include <math.h>
  3. int prime(int n)
  4. {
  5. if(n<=1)
  6. {
  7. return 0;
  8. }else{
  9. int i;
  10. int flag=1;
  11. for(i=2;i<=sqrt(n);i++)
  12. {
  13. if(n%i==0)
  14. {
  15. flag=0;
  16. }
  17. }
  18. if(flag==1)
  19. {
  20. return 1;
  21. }else{
  22. return 0;
  23. }
  24. }
  25. }
  26. int main()
  27. {
  28. int s;
  29. scanf("%d",&s);
  30. int m=pow(2,s)-1;
  31. if(prime(s)&&prime(m))
  32. {
  33. printf("YES");
  34. }else{
  35. printf("NO");
  36. }
  37. return 0;
  38. }

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号