主题:判断一个数是不是素数
感觉这个好难啊,以后搞计算机都要这样写程序吗,我的脑子不好使啊……最近真的好丧,心情忽高忽低的,严重怀疑自己适不适合,老天爷啊,给我指一条明路吧。
首先可以先写出这样一段代码。大概的思路就是输入一个数x和变量i,然后让数x对i=2到i=x-1的数进行取余,循环次数是固定的,所以用for循环
在循环的过程中如果有一个的取余的结果是0,那么就说明这个数不是素数。
#include <stdio.h>
int main()
{
int x;
scanf("%d",&x);
int i;
for(i=2;i<x;i++){
if(x%i==0){
printf("不是素数\n");
}else{
printf("是素数\n");
}
}
return 0;
}
这样写有一个漏洞就是每一次循环就会输出一次"是/不是素数",改进方法如下:
事实上在循环的过程中i++ x%i 只要有一次取余的结果为0,就可以终止循环并确定x不是素数
所以为了解决这个漏洞,我们可以在循环中引入一个新的变量isprime并初始化为1,用isprime的值来表示x是不是素数,isprime=0表示x不是素数,isprime=1表示x是素数
循环开始后一旦有x%i==0成立 ,就isprime=0,然后离开循环进行下一步的判断,代码如下:
#include <stdio.h>
int main()
{
int x;
scanf("%d",&x);
int i;
int isprime=1;//x为素数
for(i=2;i<x;i++){
if(x%i==0){
isprime=0;
break;
}
}
if(isprime==0){
printf("不是素数\n");
}else{
printf("是素数\n");
}
return 0;
}