素数

素数1:

#include<stdio.h>
#include<math.h>
int Judge(int n)
{
    int i, k;
    if (n == 0 || n == 1)
        return 0;
    k = sqrt(n);
    for (i = 2; i <= k; i++)
    {
        if (n % i == 0)
            return 0;
    }
    return 1;
}
int main ()
{
    int n;
    while (scanf("%d", &n) != EOF)
    {
        if (Judge(n))
            printf("Yes\n");
        else
            printf("No\n");
    }
}

素数2:(输入一个整数n(1<=n<=1000000)以EOF结束(大约有100w组数据))

# include <stdio.h>
# define N 1000010
int a[N] = {1, 1};
void prime(int a[])
{
    int i, j;
    for (i = 2; i < N; i++)
    {
        if (a[i] == 0)
        {
            for (j = i + i; j < N; j+=i)
                a[j] = 1;
        }
    }
}
int main ()
{
    prime(a);
    int n;
    while (scanf("%d", &n) != EOF)
    {
        if (a[n] == 0)
            printf("Yes\n");
        else
            printf("No\n");
    }
    return 0;
}
素数3:(输入一个数N(1<=N<=10^12)以EOF结束(大约1W组数据))
# include <stdio.h>
# include <math.h>
# define N 1000001
int a[N] = {1, 1}, b[N], k; 
void prime()
{
    for(int i = 2; i < N; i++)
    {
        if(a[i] == 0)
        {
            b[k++] = i;
            for(int j = i + i; j < N; j += i)
                a[j] = 1;
        }
    }

int judge(long long n)
{
    if(n == 1 || n == 0)
        return 0;   
    for(int i = 0; (long long)b[i] * b[i] <= n; i++)
        if(n % b[i] == 0)   //对b[i]取余
            return 0;
    return 1;
}
int main()
{
    prime();
    long long n;
    while(scanf("%lld", &n) != EOF)
    {
        if(judge(n))
            printf("Yes\n");
        else
            printf("No\n");
    }
    return 0;
}
posted @ 2015-04-18 18:32  搁浅の记忆  阅读(161)  评论(0编辑  收藏  举报