打印100~200 之间的素数

编写思想:对100到200之间的数依次进行for循环判断,看其是否为素数。判断方法:对于一个自然数,除了1以外,不是素数就是合数。若该数字是素数,则不能被除了1和它自身以外的数整除;而一个数如果是合数,则它的所有因子不会大于对其开根号所得出的数,由此可得出每个数最多时候的循环次数。

初次生成的源代码如下:

#include<stdio.h>
#include<math.h>
int main()
{
	int primer,variabe,sign;
	for(primer=101;primer<201;primer++)
	{
		for(variabe=2;variabe<=sqrt(primer);variabe++)
		{
			sign=0;
			if(primer%variabe==0)  break;
			else  sign=1;
		}
		if(sign==1)
		printf("%-5d",primer);
	}
	return 0;
}

运行结果如下:

101   103   107   109   113   127   131   137   139   149   151   157   163   167

173   179   181   191   193   197   199

由于以上程序产生了一些不必要的循环,增加了程序的时间复杂度,故而对其进行了改进。

改进1:去掉了标志变量sign,减少了内存的占用;

改进2:由于找的是100到200之间的素数,因此其间的偶数均不必进行判断,故而只剩下奇数,又由于奇数肯定无法被偶数整除,故而去掉variable中的偶数循环,降低了程序的时间复杂度。

改进后的代码如下:

#include<stdio.h>
#include<math.h>
int main()
{
	int primer,variabe;
	for(primer=101;primer<201;primer+=2)
	{
		for(variabe=3;variabe<=sqrt(primer);variabe+=2)
		{
			if(primer%variabe==0)  
			    break;
		}
		if(variabe>sqrt(primer))
		printf("%-5d",primer);
	}
	return 0;
}

运行结果同上一致:

101   103   107   109   113   127   131   137   139   149   151   157   163   167

173   179   181   191   193   197   199

时间: 2024-10-10 08:52:48

打印100~200 之间的素数的相关文章

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

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

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

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

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++){ //循环

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

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

用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