C语言判断一个数是否为素数

输入一个大于3的整数n,判断它是否为素数。

注:素数又叫质数。素数,指的是“大于1的整数中,只能被1和这个数本身整除的数”。

       素数也可以被等价表述成:“在正整数范围内,大于1并且只有1和自身两个约数的数”。

思路:让n被i除(i的值从2到n-1),如果n能被2到n-1中任意一个整数整除,则表示n不是素数,退出循环。

#include <stdio.h>                      
int main()
{
    int i,n;
    system("mode con cp select=65001");
    printf("请输入一个大于3的整数n=");
    scanf("%d",&n);
    for(i=2;i<=n-1;i++){
    // 当i>n-1时,跳出循环
        if(n%i==0){
            break;
        }
    }
    // printf("i=%d\n",i);
    if(i>=n){
        printf("你输入的%d是素数\n",n);
    }else{        
        printf("你输入的%d不是素数\n",n);
    }
    return 0;
}

程序改进:如果n能被2到n-1之间任意一整数整除,其两个因子一定有一个小于或等于\sqrt{n},另一个数大于或等于\sqrt{n}。例如,16能被2、4、8整除,16=2*8,因子2小于4,因子8大于4,因子4等于\sqrt{16}

#include <stdio.h>
#include <math.h>                  
int main()
{
    int i,n,k;
    system("mode con cp select=65001");
    printf("请输入一个大于3的整数n=");
    scanf("%d",&n);
    k=(int)sqrt(n); //对n求平方根,再取整
    for(i=2;i<=k;i++){
        if(n%i==0){
            break;
        }
    }
    // printf("i=%d\n",i);
    // printf("k=%d\n",k);
    if(i<=k){
        printf("你输入的%d不是素数\n",n);
    }else{        
        printf("你输入的%d是素数\n",n);
    }
    return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值