码迷,mamicode.com
首页 > 其他好文 > 详细

判断一个数是否为素数

时间:2019-12-30 22:47:02      阅读:93      评论:0      收藏:0      [点我收藏+]

标签:输入   提前   pre   integer   ==   clu   问题:   printf   思路   

问题:输入一个大于3的整数n,判断它是否为素数(prime,又称质数)。

思路一

采用的算法是,让n被i除(i的值从2变到n-1),如果能被2~(n-1)之中的任何一个整数整除,则表示n肯定不是素数,不必再继续被后面的整数除,因此,可以提前结束循环。注意:此时i的值必然小于n。
代码如下:

#include<stdio.h>
int main()
{
    int n, i;
    printf("please enter a integer number, n=?");
    scanf("%d", &n);
    for(i=2; i<=n-1; i++)
        if(n%i == 0)break;
    if(i<n) printf("%d is not a prime number.\n", n);
    else printf("%d is a prime number.\n", n);
    return 0;
}

思路二

其实n不必被2~(n-1)范围内的各整数去除,只须将n被2~n/2间的整数除即可,甚至只须被2~sqrt(n)之间的整数除即可。
代码如下:

#include<stdio.h>
#include<math.h>
int main()
{
    int n, i, k;
    printf("please enter a integer number:n=?");
    scanf("%d", &n);
    k = sqrt(n);
    for(i=2; i<=k; i++)
        if(n%i == 0)break;
    if(i <= k)printf("%d is not a prime number.\n", n);
    else printf("%d is a prime number.\n", n);
    return 0;
}

注:有问题,欢迎指正。

判断一个数是否为素数

标签:输入   提前   pre   integer   ==   clu   问题:   printf   思路   

原文地址:https://www.cnblogs.com/banxia20191109/p/12122018.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!