判断是否为素数

素数:除了1和其本身,不能被任何数整除。

那么我们只需要确定一个范围。在这个范围内进行判断,看n是否能够整除这些数。

问题来了,这个范围该是多少呢?

1.判断范围是 2 ~ n-1

这是最简单的,上面定义了素数的概念,因此我们把1和本身排除就可以了,看看 2~n-1 这个范围内的数能不能被整除。

#include <stdio.h>
int main(){
    int n,i;
    scanf("%d",&n);  //输入要判断的数
    for(i = 2; i <= n-1; i++){
        if(n%i==0){
            printf("%d不是素数",n);   //能被其他数整除,即不是
            break;                   //记得停止,否则会一直判断,直到最后i=n,看下面的解释
        }
    }//i到达最大的范围时,此时i=n-1,但仍然满足 i <= n-1,因此再次进入i++的环节,此时i=n,不满足条件了,退出for循环
    if(i == n){            //因此如果能到达这里,说明前面并没有能整除n的其他数,即n是素数
        printf("%d是素数",n);   
    }
    if(n == 1){       //1本身不是素数
        printf("%d不是素数",n);
    }
}

2.判断范围是 2 ~ n/2

同上,换for循环里面的范围就好,还有最后对i的判断处

#include <stdio.h>
int main(){
    int n,i;
    scanf("%d",&n);  //输入要判断的数
    for(i = 2; i <= n/2; i++){
        if(n%i==0){
            printf("%d不是素数",n);   
            break;                   
        }
    }
    if( i>n/2 ){            
        printf("%d是素数",n);   
    }
    if(n == 1){       //1本身不是素数
        printf("%d不是素数",n);
    }
}

if( i > n/2)这里看到有的大佬写的是 if(  (i > n/2) && (n!=1)  ),个人不知道要不要加后面的n!=1,因为加不加好像没什么影响,结果都一样

3.判断范围是 2 ~ 根号n

#include <stdio.h>
#include <math.h>  //导入数学相关的
int main(){
    int n,i;
    scanf("%d",&n);  //输入要判断的数
    for(i = 2; i <= sqrt(n); i++){  //sqrt() 对括号内的数字进行开方
        if(n%i==0){
            printf("%d不是素数",n);   
            break;                   
        }
    }
    if( i>sqrt(n) && (n!=1) ){           
        printf("%d是素数",n);   
    }
    if(n == 1){       //1本身不是素数
        printf("%d不是素数",n);
    }
}

这个还是加了hhh,看大家怎么想的吧,加了更完整。

  • 8
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值