质数:质数(prime number)又称素数,有无限个。质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数,这样的数称为质数。

  题设:输入一个大于1的自然数,求出从2到该数之间所有的质数。

  1.  按照素数的定义来求取,用两个for循环。

 #include <stdio.h>
int prime(int i){
int j;
for(j=;j<i;j++){
if(i%j==){
return ;
}
}
return ; } int main(void){
int n,i;
printf("请输入一个整数: ");
scanf("%d",&n);
for(i = ; i <= n; i++){
if(prime(i)){
printf("%d ",i);
}
}
printf("\n"); }

  2.  对 1 进行优化,先排除可以被2整除的数(一定不是质数),sqrt()减少循环的区间。

 #include <stdio.h>
#include <math.h>
int prime(int i){
int j,temp;
temp=sqrt(i)+;//sqrt()
for(j=;j<temp;j++){
if(i%j==){
return ;
}
}
return ;
}
int main(void){
int n,i;
printf("请输入一个整数: ");
scanf("%d",&n);
for(i = ; i <= n; i++){
if(i % != ){ //除去2的倍数。
if (prime(i)) {
printf("%d ",i);
}
} }
printf("\n"); }

  3.  筛选法

 #include "stdio.h"
#include "math.h"
int main(void){
int i,j,n,t,a[];
t = ;
for(i = ; i < ; i++){
a[i] = ;
} printf("请输入一个大于1的整数: ");
scanf("%d",&n); for(i = ; i <= n; i++){
if(a[i] == ){
for(j = i*; j <= n; j = j+i){
a[j] = ;
}
printf("%d ",i);
t++;
}
}
printf("\n");
printf("%d",t); }

   3-1  筛选法优化

 #include <stdio.h>
#include <math.h> int main(){
int arr[], i, j, n;
arr[] = ;
for(i=; i<; i++){
if(i % ==){
arr[i] = ;
}else{
arr[i] = ;
}
} printf("请输入一个整数: ");
scanf( "%d", &n); for(i=; i<=n; i++){
if (arr[i] == ){
for(j=i*i; j<=n; j=j+i*){
arr[j] = ;
} printf("%d ",i);
} } }

C_求质数的更多相关文章

  1. 求质数算法的N种境界[1] - 试除法和初级筛法

    ★引子 前天,俺在<俺的招聘经验[4]:通过笔试答题能看出啥?>一文,以"求质数"作为例子,介绍了一些考察应聘者的经验.由于本文没有政治敏感内容,顺便就转贴到俺在CSD ...

  2. [经典算法] Eratosthenes筛选求质数

    题目说明: 除了自身之外,无法被其它整数整除的数称之为质数,要求质数很简单,但如何快速的求出质数则一直是程式设计人员与数学家努力的课题,在这边介绍一个著名的 Eratosthenes求质数方法. 题目 ...

  3. C语言1-100连加,求质数,算瑞年检测字母大小写,登录系统

    #include <stdio.h> void test(){//1+2+3+4+.....+100 int a,b; a=0; b=0; for ( ; a<=100; a++) ...

  4. 【转】求质数算法的N种境界

    原文地址:http://blog.csdn.net/program_think/article/details/7032600/ ★引子 前天,俺在<俺的招聘经验[4]:通过笔试答题能看出啥?& ...

  5. (转)求质数算法的N种境界[1] - 试除法和初级筛法

    ★引子 前天,俺在<俺的招聘经验[4]:通过笔试答题能看出啥?>一文,以"求质数"作为例子,介绍了一些考察应聘者的经验.由于本文没有政治敏感内容,顺便就转贴到俺在CSD ...

  6. C语言程序设计100例之(11):求质数

    例11  求质数 问题描述 质数是指除了有1和自身作为约数外,不再有其他约数的数.比如:3.5.7是质数.而9不是质数,因为它还有约数3. 编写程序求给定区间中的所有质数. 输入格式 两个整数a和b, ...

  7. C语言程序设计100例之(12):Eratosthenes筛法求质数

    例12   Eratosthenes筛法求质数 问题描述 Eratosthenes筛法的基本思想是:把某范围内的自然数从小到大依次排列好.宣布1不是质数,把它去掉:然后从余下的数中取出最小的数,宣布它 ...

  8. 小白的C++之路——求质数

    初学C++,打算用博客记录学习的足迹.写了两个求质数的程序,修修改改. #include <iostream> #include <math.h> using namespac ...

  9. Java实现欧拉筛与花里胡哨求质数高级大法的对比

    我也不清楚这是什么高级算法,欧拉筛是昨天有位大佬,半夜无意间告诉我的 欧拉筛: 主要的含义就是我把这个数的所有倍数都弄出来,然后下次循环的时候直接就可以跳过了 import java.text.Sim ...

随机推荐

  1. Eclipse Memory Analyzer

    先写一段可以制造堆溢出的代码 package com.test.jvm.oom; import java.util.ArrayList; import java.util.List; /** * @d ...

  2. [转] JavaScript 之 ArrayBuffer

    JS里的ArrayBuffer 还记得某个晚上在做 canvas 像素级操作,发现存储像素的数据格式并不是Array类型,而是ArrayBuffer,心想这是什么鬼?后来查了一些资料,发现自己这半年来 ...

  3. [转] web前端js构造无法销毁的类UUID识别码,识别浏览器设备唯一性

    用户行为统计在如今的前端生态中已是稀松寻常,如各种站长统计工具.识别用户访问客户端唯一性是必要的实现,对于web前端获取的设备信息,一般容易想到的是通过navigator.userAgent,但相同设 ...

  4. es6 let和const

    一.let 1.let块作用域 if(true){ var a=1; let b=2; } console.log("a:"+a);//a:1 console.log(" ...

  5. kudu的读取数据流程

    当客户端从Kudu的表中读取数据时,必须首先建立需要连接的系列tablet服务器. 通过执行tablet发现过程(如上所述)来确定包含要读取的主关键字范围的tablet的位置(读取不必在领导者tabl ...

  6. python --判断列表重复

    一.判断单个列表中的元素是否存在重复 使用set方法去重后,和原list进行对比,如果相等,那么说明原列表无重复,如果存在重复,说明列表存在重复 def is_repect_all(L): repea ...

  7. c#生成连续单号

    bill.BillCode = GetBillCode("JH");//生成单号 if (bill.BillCode == "no") { bill.BillC ...

  8. 启动tomcat出现Removing obsolete files from server... Could not clean server of obsolete ……错误

    在Eclipse启动tomcat出现"Removing obsolete files from server... Could not clean server of obsolete …… ...

  9. ZOJ 3769-Diablo III(DP)

    描述 Diablo III is an action role-playing video game. A few days ago, Reaper of Souls (ROS), the new e ...

  10. RBF:RBF基于近红外光谱的汽油辛烷值含量预测结果对比—Jason niu

    load spectra_data.mat temp = randperm(size(NIR,1)); P_train = NIR(temp(1:50),:)'; T_train = octane(t ...