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

根据素数定义,只能被1和它本身整除的自然数为素数。利用定义可以循环判断该数除以比它小的每一个自然数(不包括1),如果都不能整除,则这个数就是素数。

由于上述方法效率太低,对此方法进行优化。我们都知道偶数一定不是素数,那只求剩余一般的数。如果一个数是合数,那么它的最小质因数肯定小于等于他的平方根,由合数定理可进一步优化,只需要循环判断该数除以比它的平方根小的每一个自然数(大于1)即可。

C语言代码如下:

#include<stdio.h>
#include<math.h>
int main()
{
 int m,k,i,count=0;
 for(m=101;m<=200;m+=2)
 {   k=(int)sqrt(m);/*(int)sqrt(m)将浮点型转为整型*/
     for(i=2;i<=k;i++)
         if(m%i==0)break;
            if(i>k)
            { 
            count++;
            printf("%d ",m);
            }
 }printf("\ncount=%d",count);
 return 0;
}

一般说来,程序进入循环体后在下次循环判断之前执行循环体里的所有语句,break和continue语句可以终止循环或忽略某些循环。

break: 此语句导致程序终止包含它的循环,并进行程序的下一阶段(整个循环后面的语句),即不是跳到下一个循环周期而是退出循环。如果break语句包含在嵌套循环里,它只跳出最里面的循环。

continue:循环语句里有此语句时,程序运行到此语句时,不在执行循环体里continue后面的语句而是跳到下一个循环入口处执行下一个循环。如果continue语句包含在嵌套循环语句里,它只影响包含它的最里层的循环。

时间: 2024-10-19 04:16:01

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

打印100~200 之间的素数

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

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);       

【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(&

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之间的素数

分析: 判断一个正整数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

100~200之间的素数(及其四个优化方案)

要求素数,首先我们要知道什么是素数,在解题的时候,不要急着去寻找方法解题,而是要先了解它的根本,才可以在遇到类似题的时候轻松面对解决 质数(prime number)又称素数,有无限个.一个大于1的自然数,除了1和它本身外,不能被其他自然数整除,换句话说就是该数除了1和它本身以外不再有其他的因数;否则称为合数. 程序如下: #include<stdio.h> #include<stdlib.h> int main() { int i; for (i = 100; i <= 2