C 练习实例33 - 质数(素数)判断
C 语言教程
· 2019-02-21 20:12:47
题目:判断一个数字是否为质数。
程序分析:质数(prime number)又称素数,有无限个。一个大于1的自然数,除了1和它本身外,不能被其他自然数整除。
程序源代码:
实例
// Created by www.codercto.com on 15/11/9.
// Copyright © 2015年 码农教程. All rights reserved.
//
#include<stdio.h>
#include<math.h>
#define MAX 1000
int prime[MAX];
int isPrimeNaive(int n)
{
if(n <= 1)
return 0;
for(int i = 2; i < n; i++)
if(n % i == 0)
return 0;
return 1;
}
int isPrime(int n)
{
if(n<= 1)
return 0;
if(n == 2)
return 1;
if(n%2 == 0)
return 0;
int limit = (int)sqrt((double)n);
for(int i = 3; i <= limit; i=i+2)
{
if(n % i == 0)
return 0;
}
return 1;
}
void sieve()
{
prime[0] = 0;
prime[1] = 0;
for(int i = 2; i < MAX; i++)
prime[i] = 1;
int limit = (int)sqrt((double)MAX);
for(int i = 2; i <= limit; i++)
{
if(prime[i])
for(int j = i*i; j <= MAX; j+=i)
prime[j] = 0;
}
}
int isPrimeSieve(int n)
{
if(prime[n])
return 1;
else
return 0;
}
int main()
{
sieve();
printf("N=%d %d\n", 1, isPrime(1));
printf("N=%d %d\n", 2, isPrime(2));
printf("N=%d %d\n", 3, isPrime(3));
printf("N=%d %d\n", 4, isPrime(4));
printf("N=%d %d\n", 7, isPrime(7));
printf("N=%d %d\n", 9, isPrime(9));
printf("N=%d %d\n", 13, isPrime(13));
printf("N=%d %d\n", 17, isPrime(17));
printf("N=%d %d\n", 100, isPrime(100));
printf("N=%d %d\n", 23, isPrime(23));
printf("N=%d %d\n", 1, isPrime(1));
return 0;
}
以上实例输出结果为(末尾数字 1 表示是质素,0 表示不是质素):
N=1 0 N=2 1 N=3 1 N=4 0 N=7 1 N=9 0 N=13 1 N=17 1 N=100 0 N=23 1 N=1 0
点击查看所有 C 语言教程 文章: https://www.codercto.com/courses/l/17.html
黑客大曝光
Joel Scambray、Vincent Liu、Caleb Sima / 姚军 / 机械工业出版社华章公司 / 2011-10 / 65.00元
在网络技术和电子商务飞速发展的今天,Web应用安全面临着前所未有的挑战。所有安全技术人员有必要掌握当今黑客们的武器和思维过程,保护Web应用免遭恶意攻击。本书由美国公认的安全专家和精神领袖打造,对上一版做了完全的更新,覆盖新的网络渗透方法和对策,介绍如何增强验证和授权、弥补Firefox和IE中的漏洞、加强对注入攻击的防御以及加固Web 2.0安全,还介绍了如何将安全技术整合在Web开发以及更广泛......一起来看看 《黑客大曝光》 这本书的介绍吧!