【C语言】求100~200之间的素数

分析:

判断一个正整数m是否为素数有多种方法。

方法1:让m依次被2,3,…,m-1除,如果m不能被2~m-1中的任何一个整数整除,则m是素数。

方法2:让m依次被2,3,…,m/2除,如果m不能被2~m/2中的任何一个整数整除,则m是素数。

方法3:让m依次被2,3,…,sqrt(m)除,如果m不能被2~sqrt(m)中的任意一个整数整除,则m为素数。sqrt(m)为m的平方根。

其中最后一种方法判断速度最快,因此这里采用最后一种方法。

#include <stdio.h>

#include <math.h>

int  main( )

{

int m,i,k,n=0;

for(m=101; m<=200; m+=2)

{

k=sqrt(m);

for (i=2;i<=k;i++)

if (m%i==0) break;

if (i>k)

{

printf("%5d",m);

n=n+1;

if (n%10==0)

printf("\n");

}

}

}

运行结果为:

101 103 107 109 113 127 131 137 139 149

151 157 163 167 173 179 181 191 193 197

199

时间: 2024-08-16 17:13:39

【C语言】求100~200之间的素数的相关文章

C语言打印100—200之间的素数

质数(prime number)又称素数,有无限个.一个大于1的自然数,除了1和它本身外,不能整除以其他自然数(质数),换句话说就是该数除了1和它本身以外不再有其他的因数:否则称为合数.  根据算术基本定理,每一个比1大的整数,要么本身是一个质数,要么可以写成一系列质数的乘积:而且如果不考虑这些质数在乘积中的顺序,那么写出来的形式是唯一的.最小的质数是2. 目前为止,人们未找到一个公式可求出所有质数. C语言代码如下:     # include <stdio.h> int main()   

c语言打印100~200之间的素数

素数即就是该数除了1和它本身以外不再有其他的因数,否则称为合数. 找寻100~200之间的素数的算法:让a被2~√a除,若a不能被整除,则a是素数. #include<stdio.h> #include<math.h> int main() {    int a,k,i;//数a     printf("100~200以内的prime\n");      for (a=101;a<=200;a=a+2)   {  k= sqrt(a);    for (i

C语言打印100 ——200之间的素数

根据素数定义,只能被1和它本身整除的自然数为素数.利用定义可以循环判断该数除以比它小的每一个自然数(不包括1),如果都不能整除,则这个数就是素数. 由于上述方法效率太低,对此方法进行优化.我们都知道偶数一定不是素数,那只求剩余一般的数.如果一个数是合数,那么它的最小质因数肯定小于等于他的平方根,由合数定理可进一步优化,只需要循环判断该数除以比它的平方根小的每一个自然数(大于1)即可. C语言代码如下: #include<stdio.h> #include<math.h> int m

求100—200之间的全部素数

@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css); @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css); 求100—200之间的全部素数

【c语言】将100~200之间的素数输出

// 将100~200之间的素数输出 #include <stdio.h> #include <math.h> int main() { int i,j; printf("100~200之间的素数如下:\n"); for(i = 101; i <= 199; i++ ) { for( j = 2; j <= sqrt(i); j++ ) { if( i % j == 0 ) break; } if( sqrt(i) < j ) printf(&

打印100~200 之间的素数

编写思想:对100到200之间的数依次进行for循环判断,看其是否为素数.判断方法:对于一个自然数,除了1以外,不是素数就是合数.若该数字是素数,则不能被除了1和它自身以外的数整除:而一个数如果是合数,则它的所有因子不会大于对其开根号所得出的数,由此可得出每个数最多时候的循环次数. 初次生成的源代码如下: #include<stdio.h> #include<math.h> int main() { int primer,variabe,sign; for(primer=101;p

java实现查找100~200之间的素数

1 package com.company; 2 3 public class Main { 4 5 public static void main(String[] args) { 6 // write your code here 7 System.out.println("helloworld"); 8 int i; 9 int j; 10 for (i=100;i<=200;i++){ //循环i=100~200 11 for (j=2;j<i;j++){ //循环

用c语言编写打印出100~200 之间的素数。

运行代码: #include<stdio.h> #include<math.h> int main() { int a; int b; int n=0; for (a=100;a<=200;a++) { for (b=2;b<=a-1;b++) { if (a%b==0) break;    //若a能整除b,则执行break操作,即不执行下面的if操作返回                           //     上面的那个for循环. if (b==a-1)

C语言实现打印100~200 之间的素数

#include "stdio.h"#include "math.h"void main(){ int m,i, k;         for(m=101; m<=200; m+=2)         { k=sqrt(m);         for (i=2;i<=k;i++)         if (m%i==0) break;         if(i>k)        { printf("%6d",m);