C语言:判断一个数是不是素数

判断素数的方法
素数:指整数在大于1的自然数中,除了1和本身外,无法被其他自然数整除。简而言之,素数只能被1和它本身整除
方法一:

#include <stdio.h>
#include <windows.h>
#pragma warning(disable:4996)
int main()
{
    int data, i;
    printf("Please Enter:");
    scanf("%d", &data);
    for (i = 2; i < data; i++)
       if (data%i == 0) 
           break;
       if (i == data)
           printf("This is a prime.");
      else
           printf("This is not a prime.");
      system("pause");
}

方法二:用函数实现
因为因子都是对称出现,故可将代码优化,只需要遍历一半的数字,不用将所有数字都判断;在此基础上又发现数字,数值最接近的一对因子的最小值为数字开平方后的值,因此也只需遍历开平方后的数字,这样使代码也变得更加有效
例如:12=1×12=2×6=3×4
=4×3=6×2=12×1

#include <stdio.h>
#include <Windows.h>
#pragma warning(disable:4996)
int IsSu(int x)
{
    int i = 2;
    //for(;i<=(int)sqrt((double)x);i++)
    for (; i < x/2; i++){
       if (x % i == 0){
           return 0;
       }
    }
return 1;
}
int main()
{
    int data=0;
    printf("Please Enter data:\n");
    scanf("%d", &data);
    if (IsSu(data)==1){
        printf("%d:是素数\n", data);
    }
    else{
        printf("%d:不是素数\n", data);
    }
        system("pause");
        return 0;
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值