以下是一些笔记。
求素数的,我会记录下程序运行的时间,比较不同算法的效率。以后可能会常更新的。如果有最优的算法,我会贴出来的。
#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语言代码" 在编程领域,素数是指大于1且除了1和它自身以外没有其他正因数的自然数。C语言是一种广泛用于系统编程、应用编程和嵌入式系统的高级编程语言。在C语言中,编写求素数的...
c语言源代码 判断是否是素数 然后把素数相加..
本项目以"C语言求素数"为主题,旨在帮助初学者理解如何利用C语言编写程序来找到一个数列中的素数。 首先,我们要了解C语言的基础语法。C语言是一种结构化的编程语言,它的基本结构包括变量定义、数据类型、控制结构...
C语言 求100~200之间的素数 都来下载吧
求101-200之间的素数; 初学C语言的时候写的程序,写的可能不是很好,但我觉得小白比较能接受,算法很简单。希望可以帮到正在看的你
c语言循环求素数,c语言经典面试题,面试必备宝典
直接运行程序显示的时间会因为输出数据比较多所以耗时长; 也可以进CMD控制台运行程序,比如程序在E:\123.exe,进CMD后输入: E:123.exe>e:\123.txt 然后输入一次数据两次回车。可以看到123.txt显示时间非常短暂。
在C语言中,求质数是一个常见的编程练习,它可以帮助程序员熟悉循环和判断语句的使用。根据提供的文件内容,我们可以了解到质数求解的方法,以及如何在C语言中实现这一算法。 文件中提到的主要知识点包括以下几个...
求素数的C语言版本 求素数的C语言版本 求素数的C语言版本
在编程领域,质数是指一个大于1的自然数,它除了...总结来说,求质数的C语言实现涉及到基础的循环、条件判断和数学逻辑。通过不断试除,我们可以找出所有的质数,并将其输出。这种算法简单易懂,适合初学者理解和实践。
判断素数C语言判断素数(求素数)(两种方法)
用厄拉多塞法求素数的C源代码
在"素数判断.c"文件中,就是实现了上述的C语言代码,你可以编译并运行此程序来验证不同数字的素数状态。通过这个程序,你可以学习到C语言的基本语法、函数定义和调用、输入输出操作以及简单的算法实现。
关于素数的求法,判断以及输出,可以用C语言 求小于一个数的全部素数。
本项目涉及的是一个C语言程序,用于统计指定范围内的素数并计算它们的和。C语言是一种基础的、面向过程的编程语言,常用于教学和系统编程。Dev-C++是一个集成开发环境,适合初学者用来编写和运行C/C++程序。 在这个...
### C语言求100到200之间的素数 #### 知识点解析 **题目背景:** 在计算机科学领域,素数检测是常见的算法问题之一。本篇代码示例通过C语言实现了一个简单的程序,该程序能够找出100至200之间的所有素数。对于...
c语言中求质数问题的实现代码,可直接编译执行
求任意两个数之间的所有素数,用C语言编程,并包含动态存储,指针等知识点。
在C语言中,判断一个数是否为素数(质数)是常见的算法问题。素数是大于1且只有1和其本身两个正因数的自然数。在这个示例中,我们将学习如何用C语言编写一个程序来判断100以内的整数是否为素数。 首先,我们来看...