因为,是上周开始自学C语言的,只学循环,选择,所以难免水平有些低下,欢迎指正。
简要介绍下,素数指的是,在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。以我有限的知识,判断素数的算法,选用循环结构,对于一个确定的整数n,用从2到n-1这些整数去取余,若取余结果都非零,则可以判定该整数为素数。根据判断方法,利用循环结构从2到n-1逐一验证,每一步验证若取余为零则,用prime=1去记录这种结果。反之则用,prime=0去记录,最后对每一步的prime求和,若为求和为零的话,则该整数为素数。截取的源代码如下
```c
//验证每一个n是否为素数的算法
for (i=2;i<n;i++){
int p=n%i;
if(p==0){
prime=1;
}
else{
prime=0;
}
s+=prime;
}
if(s==0){
printf("%d是素数\n",n);
}
else{
``
因为这个题目来自于浙大C语言程序这门网课,网课里,只是单一的输入,每个数,再进行判断的,未免过有些低效,所以我再选用了用了一次循环,给定一个具体的整数范围(2,x),在这个范围内去检索素数。整个代码如下。
```c
#include <stdio.h>
int main()
{
//确定寻找素数的范围
int x=0;
int i,prime,s,n;
printf("请输入你要寻找素数的范围\n");
scanf("%d",&x);
//从2到X逐一验证是否为素数
for(n=2;n<x;n++){
s=0;
//验证每一个n是否为素数的算法
for (i=2;i<n;i++){
int p=n%i;
if(p==0){
prime=1;
}
else{
prime=0;
}
s+=prime;
}
if(s==0){
printf("%d是素数\n",n);
}
else{
}
}
return 0;
}
最后在100这个范围内,运行结果为
最后,总结我作为新手的问题,我遇到的难题一开始源代码如下
我把初始条件s=0,这个语句放在了第二个循环里,没有考虑到当对于某一个整数,循环结束后,若s不等于0的话,s的值会进入下一个(n+1是否为整数的)循环,这里的s就不是从零开始了,会影响后面选择语句的判断,错误的运行结果为
每一个问题,他的解决方法并不唯一,我的算法只是一种。因为我所学有限,难免有很多错误,欢迎大家指正!