判断一个数是否为素数(质数) c语言

ゝ一世哀愁。 2022-12-05 00:44 338阅读 0赞

质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数。最小的质数是2,它也是唯一的偶数质数。
原理:number 只需被 (2 ~ 根号下number)之间的每一个整数去除就可以了(包括 根号下number这个数)。如果 nummber不能被 (2 ~ 根号下number) 间任一整数整除,number 必定是素数

  1. #include"stdio.h"
  2. #include"math.h"
  3. main()
  4. {
  5. int number,i,n;
  6. printf("请输入一个正整数:\t");
  7. scanf("%d",&number);
  8. while(number>0)//输入0或小于0的数,结束循环
  9. {
  10. n=(int)sqrt(number);//开平方
  11. if(number==1)
  12. {
  13. printf("1既不是素数,也不是合数\n");//注:1既不是素数,也不是合数
  14. scanf("%d",&number);
  15. continue; //跳出这一次循环
  16. }
  17. for(i=2;i<=n;i++) //2和3的开平方分别为1.414和1.732,不满足循环条件(i<=n)
  18. {
  19. if(number%i==0)
  20. break;
  21. }
  22. if(i>n) //i=2,2和3满足(i>n),所以是素数
  23. printf("%d是素数\n",number);
  24. else
  25. printf("%d不是素数\n",number);
  26. printf("请输入一个正整数:\t");
  27. scanf("%d",&number);
  28. }
  29. }

运行:成功
2.以下是函数形式

  1. #include"stdio.h"
  2. #include"math.h"
  3. void find_prime(int number)
  4. {
  5. int n,i;
  6. n=(int)sqrt(number);
  7. for(i=2;i<=n;i++)
  8. {
  9. if(number%2==0)
  10. break;
  11. }
  12. if(i>n)
  13. printf("%d是素数\n",number);
  14. else
  15. printf("%d不是素数\n",number);
  16. }
  17. void main()
  18. {
  19. int number;
  20. printf("请输入大于一的正整数:\t");
  21. scanf("%d",&number);
  22. if(number>1)
  23. find_prime(number);
  24. else if(number==1)
  25. printf("1既不是质数,也不是合数\n");
  26. else
  27. printf("请输入大于一的正整数\n");
  28. }

发表评论

表情:
评论列表 (有 0 条评论,338人围观)

还没有评论,来说两句吧...

相关阅读

    相关 C++判断是否素数质数

    素数就是除1和它本身外没有其他的因数了叫做素数 1只有1个因数1,所有1既不是合数也不是素数 4有3个因数,属于合数 2只有2个因数,属于质数或素数 那么怎么判