`
ipython
  • 浏览: 294616 次
  • 性别: Icon_minigender_1
  • 来自: 佛山
社区版块
存档分类
最新评论

c 求素数

阅读更多

以下是一些笔记。

求素数的,我会记录下程序运行的时间,比较不同算法的效率。以后可能会常更新的。如果有最优的算法,我会贴出来的。

 

 

#include "stdio.h"                    //2百万以内 24秒
#include "math.h"
void main()
{
	long i,j,k,temp;
	int f;
	k=3;
	printf ("2 ");
	while (k<2000000)
	{ 
		temp=sqrt(k);
		f=1;
		for (i=3;i<=temp;i++)
		{
			if (k % i ==0 )
			{
				f=0;
				break;
			}
		}
		if (f==1)
			printf ("%d ",k);
		k+=2;
	}
}

 

 

 

#include "stdio.h"    //1000,000   27秒,速度慢且占用空间 
#include "math.h"   //保存己知的素数,由已知用x % 素数  
#define dd 100000
void main()
{
long N=1000;
unsigned long i,j,temp,k,kk;
unsigned long ed[dd];
int f;

for (i=0;i<dd;i++)
 ed[i]=0;

ed[0]=2;
k=3;
kk=1;
while (k<N)
{   
	f=1;
	temp=(k+1)/2;
	for (j=0;ed[j]!=0,ed[j]<temp;j++)
	{
		if  (k % ed[j]==0 ) 
		{
			f=0;
			break;
		}
	}
	if (f==1)
	{
		printf ("%d ",k);
		ed[kk]=k;
		kk++;
	}
	k+=2;
}
printf ("\n%d",kk);
}

 

 

 

#include "stdio.h"                    //2百万数据量,不保存数组 22秒
#include "math.h"
void main()
{
	long i,j,k,temp;
	int f;
	k=3;
	printf ("2 3 ");
	while (k<2000000)
	{   
		if ( (k % 3 ==0) || (k % 5==0) ) 
		{
			k+=2;
			continue;
		}
	
		temp=sqrt(k);
		f=1;
		for (i=3;i<=temp;i+=2)
		{
			if (k % i ==0 )	
			{
				f=0;
				break;
			}
		}
		if (f==1)
			printf ("%d ",k);
		k+=2;
	}
}

 

#include "stdio.h"    //筛选法,听说效率不错,
#define N 10000    //但是本人不知如何在c里面用bool型,望高手赐教
main()
{

int shu[N];
int i,j,temp,k;
for (i=2;i<=N;i++)
 shu[i]=1;

temp=N/2;
for(i=2;i<=temp;i++)
 if (shu[i]==1)
  {
   printf ("%d ",i);
   k=i;
   while (k<N)
    {
     shu[k]=0;
     k+=i;
     }
   }

system("pause");

}

 

另一种算法,在 algorithms in c 书的代码,如下。一百万,一秒左右,可惜当N 定义为很大时,数组溢出.

#include "stdio.h"
#define N 1000000
main()
{
	char shu[N];
	int i,j;
	for (i=2;i<N;i++)
		shu[i] = 1;
	for (i=2;i<N;i++)
		if (shu[i])
			for (j=2;j*i<N;j++)
				shu[j*i] = 0;
}
 
分享到:
评论

相关推荐

    c语言求素数个数(c语言求素数个数)

    c语言求素数个数

    本例是一个求素数的c语言代码

    【标题】: "本例是一个求素数的C语言代码" 在编程领域,素数是指大于1且除了1和它自身以外没有其他正因数的自然数。C语言是一种广泛用于系统编程、应用编程和嵌入式系统的高级编程语言。在C语言中,编写求素数的...

    C语言 求素数的和。

    c语言源代码 判断是否是素数 然后把素数相加..

    C 语言求素数

    本项目以"C语言求素数"为主题,旨在帮助初学者理解如何利用C语言编写程序来找到一个数列中的素数。 首先,我们要了解C语言的基础语法。C语言是一种结构化的编程语言,它的基本结构包括变量定义、数据类型、控制结构...

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

    C语言 求100~200之间的素数 都来下载吧

    C语言 求素数;例子:101~200之间的素数

    求101-200之间的素数; 初学C语言的时候写的程序,写的可能不是很好,但我觉得小白比较能接受,算法很简单。希望可以帮到正在看的你

    c语言求素数的小程序

    c语言循环求素数,c语言经典面试题,面试必备宝典

    C语言求质数代码

    直接运行程序显示的时间会因为输出数据比较多所以耗时长; 也可以进CMD控制台运行程序,比如程序在E:\123.exe,进CMD后输入: E:123.exe&gt;e:\123.txt 然后输入一次数据两次回车。可以看到123.txt显示时间非常短暂。

    C语言求质数.pdf

    在C语言中,求质数是一个常见的编程练习,它可以帮助程序员熟悉循环和判断语句的使用。根据提供的文件内容,我们可以了解到质数求解的方法,以及如何在C语言中实现这一算法。 文件中提到的主要知识点包括以下几个...

    求素数的C语言版本程序

    求素数的C语言版本 求素数的C语言版本 求素数的C语言版本

    求质数C语言

    在编程领域,质数是指一个大于1的自然数,它除了...总结来说,求质数的C语言实现涉及到基础的循环、条件判断和数学逻辑。通过不断试除,我们可以找出所有的质数,并将其输出。这种算法简单易懂,适合初学者理解和实践。

    C语言判断素数(求素数)(两种方法)

    判断素数C语言判断素数(求素数)(两种方法)

    厄拉多塞法求素数.c

    用厄拉多塞法求素数的C源代码

    C语言实现素数判断源代码

    在"素数判断.c"文件中,就是实现了上述的C语言代码,你可以编译并运行此程序来验证不同数字的素数状态。通过这个程序,你可以学习到C语言的基本语法、函数定义和调用、输入输出操作以及简单的算法实现。

    C语言 求小于一个数的全部素数

    关于素数的求法,判断以及输出,可以用C语言 求小于一个数的全部素数。

    统计素数并求和——C语言代码

    本项目涉及的是一个C语言程序,用于统计指定范围内的素数并计算它们的和。C语言是一种基础的、面向过程的编程语言,常用于教学和系统编程。Dev-C++是一个集成开发环境,适合初学者用来编写和运行C/C++程序。 在这个...

    C语言求100到200之间的素数

    ### C语言求100到200之间的素数 #### 知识点解析 **题目背景:** 在计算机科学领域,素数检测是常见的算法问题之一。本篇代码示例通过C语言实现了一个简单的程序,该程序能够找出100至200之间的所有素数。对于...

    求质数问题的c语言实现

    c语言中求质数问题的实现代码,可直接编译执行

    求两个数之间的所有素数C语言代码

    求任意两个数之间的所有素数,用C语言编程,并包含动态存储,指针等知识点。

    使用c语言判断100以内素数的示例(c语言求素数)

    在C语言中,判断一个数是否为素数(质数)是常见的算法问题。素数是大于1且只有1和其本身两个正因数的自然数。在这个示例中,我们将学习如何用C语言编写一个程序来判断100以内的整数是否为素数。 首先,我们来看...

Global site tag (gtag.js) - Google Analytics