Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说用isPrime函数来判断一个数字是否为素数,希望能够帮助你!!!。
素数,也就是除了1和自己本身以外,没有其他因数的数字。
思路:for循环,输入我们需要验证的数字x,然后依次让他对2到x-1取余,看是否结果为0.为0则不是素数。用ret参数来表示这一过程的结果。
定义完成isPrime函数后,调用isPrime函数,来判断x是否为素数。
#include<stdio.h> int isPrime(int x) { int ret = 1; if (x == 1) { ret = 0; } for (int i = 2; i < x; i++) //可以简化去掉偶数,从3到x-1每次递增2,更简化可以到sqrt(x)就结束 { if (x % i == 0)//分清楚/与%的区别,素数靠的是余数 { ret = 0; break; } } return ret; } int main(void) { int x; scanf("%d",&x); int result = isPrime(x); if (result == 0) { printf("%d不是素数\n",x); } else { printf("%d是素数\n",x); } return 0; }
以上是单次测试是否为素数,如果想要多次测试,可以考虑加入do-while循环体。
设置ch参数为用户选择继续或者退出,加入do-while循环体,代码如下:
#include<stdio.h> int isPrime(int x) { int ret = 1; if (x == 1) { ret = 0; } for (int i = 2; i < x; i++) //可以简化去掉偶数,从3到x-1每次递增2,更简化可以到sqrt(x)就结束 { if (x % i == 0)//分清楚/与%的区别,素数靠的是余数 { ret = 0; break; } } return ret; } int main(void) { int x; char ch; do { printf("请输入您想要测试的数字:"); scanf("%d", &x); int result = isPrime(x); if (result == 0) { printf("%d不是素数\n", x); } else { printf("%d是素数\n", x); } printf("您需要继续吗(Y or N):"); scanf(" %c",&ch);//此处的%c前面要空一格 printf("\n"); } while (ch=='y'||ch=='Y'); return 0; }
今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
上一篇
已是最后文章
下一篇
已是最新文章