质数:质数(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. 【bzoj3747】[POI2015]Kinoman

    题解: 水题 从左向右维护以每一个作为右端点的最大值 线段树维护 代码: #include <bits/stdc++.h> using namespace std; #define rin ...

  2. noi2018d2t1

    题解: ex-crt 学习见https://www.cnblogs.com/Miracevin/p/9254795.html hdu2891 #include <cstdio> #incl ...

  3. centos6.9编译安装nginx

    1.安装nginx所需的依赖包: yum -y install gcc gcc-c++ autoconf automake  zlib zlib-devel openssl openssl-devel ...

  4. 牛客挑战赛30 小G砍树 树形dp

    小G砍树 dfs两次, dp出每个点作为最后一个点的方案数. #include<bits/stdc++.h> #define LL long long #define fi first # ...

  5. Codeforces 362D Fools and Foolproof Roads

    Fools and Foolproof Roads 并查集瞎搞搞就行, 有点小坑点. #include<bits/stdc++.h> #define LL long long #defin ...

  6. pyqt pyside QAction 代码中触发

    pyqt pyside QAction 代码中触发 一般如果多个QAction(在同一个 QButtonGroup 中,而且是 checkable 的),不同情况下我们希望其中某个默认checked: ...

  7. pyqt text browser 设置文本

    pyqt text browser 设置文本 setHtml(u"Html") setPlainText(u"纯文本") setText(u"文本\n ...

  8. 解决UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range

    字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(en ...

  9. mongo库的相关操作经验

    操作mongo相关经验: 1.创建数据库用户名: db.createUser( { user: "bianque", pwd: "123456", roles: ...

  10. mysql查询根据时间排序

    表数据: mysql查询根据时间排序,如果有相同时间则只查询出来一个 所以需要再判断,如果时间相同,则根据id进行降序排序