C语言问题:用筛选法求100之内的素数。(利用数组。)

如果能详细解释一下就更好了。

第1个回答  2013-08-05
/*
素数是只能被1和本身整除的数,1除外
*/
#include <stdio.h>

// 用MAXNUMBER表示100,方便以后程序的修改
#define MAXNUMBER 100

void GetPrime();
int main()
{
GetPrime();
return 0;
}

void GetPrime()
{
int startNumber = 2, i;
// 从2开始到MAXNUMBER结束,一个个测试
for(startNumber = 2; startNumber <= MAXNUMBER; startNumber++)
{
// 2比较特殊,所以要单独处理
if(startNumber == 2)
{
printf("%5d", startNumber);
continue;
}
// 从2开始到startNumber结束,用startNumber去对i求模
// 如果startNumber%i==0 表示startNumber不是素数,因为它能被i整除
for(i = 2; i < startNumber; i++)
{
// 如果startNumber能被小鱼startNumber内的数整除
// 表示startNumber不是素数
if(startNumber % i == 0)
{
// 跳出for循环
break;
}
}
// 跳出for循环后判断这个数是不是素数
// 如果i>=startNumber表示这个for循环不是通过break跳出的
// 而是执行到i=startNumber,即i<startNumber为假时跳出的循环
// 这样的startNumber即为素数。
if(i >= startNumber)
{
printf("%5d", startNumber);
}
}
printf("\n");
}

/*
求素数有很多方法,这个只是入门级别的方法。
*/本回答被提问者采纳
第2个回答  推荐于2017-11-25
//埃拉托色尼筛,算法设计与分析基础,第5页
#include<stdio.h>
#include<math.h>
#define N 100
int main(){
int a[N];
int i, j, temp;
for(i=2; i<N; i++)
a[i]=i;
a[1]=0;
temp=(int)floor(sqrt(N-1));
for(i=2; i<=temp; i++){
if(a[i]!=0){
j=a[i]*a[i];
while(j<N){
a[j]=0;
j+=i;
}
}
}
for(i=0; i<N; i++){
if(a[i]!=0)
printf("%2d ", a[i]);
}
putchar('\n');
return 0;
}本回答被网友采纳

在C语言中,用筛选法求100之内的素数?用多种方法求,请附带流程图,谢谢...
void findPrimeLabel(int range,int *labelArray);int main(){ \/\/ 声明最大范围 int range;\/\/ 声明一个可以容纳比较多素数的数组 int primeArray[100];int i;printf("Input the max range:\\n");scanf("%d",&range);\/\/ 假设工作正常,那么primeArray所指向的就是一系列素数的指针,且最后-1...

C语言编程:用筛选法求100之内的素数,
#include<stdio.h>#include<math.h>voidmain(){inti,t,m;for(m=1;m<=100;m=m+2){t=sqrt(m);for(i=2;i<=t;i++)if(m%i==0)break;if(i>t)printf("%disaprimenumber.\\n",m);elseprintf("%... #include <stdio.h>#include <math.h>void main(){ int i,t,m; for(m=1;m<=100;...

C语言程序设计题:用筛选法求100以内的素数
素数。在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数。素数在数论中有着很重要的地位。比1大但不是素数的数称为合数。1和0既非素数也非合数。用筛选法求100以内的素数的源代码如下 include "stdio.h"include "stdlib.h"main(){ int i,j;for(i=2;i<99; i++){...

编写一段C语言程序:应用数组并利用筛选法求出100之内的素数。
void main() { int i,j,b,a[100],n;n=0;for ( i=2;i<100;i++ ) { b=1; for ( j=2;j<=i\/2;j++ ) if ( i%j==0 ) {b=0;break;} if ( b!=0 ) {a[n]=i;n++;} } for ( i=0;i<n;i++ ) printf("%d ",a[i]); printf("\\n");} ...

C语言编程:用筛选法求100之内的素数,要求每隔10行输出。怎么写?
i=3;i<=n;i+=2)\\x0d\\x0a{\\x0d\\x0atem=0;\\x0d\\x0afor(j=2;tem==0&&j<sqrt(i);j++)\\x0d\\x0aif(i%j==0)\\x0d\\x0atem=1;\\x0d\\x0aif(tem==0)\\x0d\\x0aprintf(",%d",i);\\x0d\\x0a}\\x0d\\x0aprintf("\\n");\\x0d\\x0asystem("pause"...

用c语言编写程序,用筛选法求100之内的所有素数
include<stdio.h> main(){int i,j,sum=0;for(i=3;i<100;i++)for(j=2;j

c语言程序编写 采用筛选法求100以内的所有素数
include<stdio.h>#include<math.h>void main(){ int a[101],i,j,k; k=sqrt(100*1.0); for(i=1;i<101;i++) \/\/初始化 a[i]=i; a[1]=0; for(i=2;i<=k;i++) \/\/筛选步长 for(j=i;j<=100;j+=i) a[j]=0; for(i=1;i<=100;i++)...

c语言中用筛选法求素数
1和0既不是质数也不是合数。通过滤波法得到的100以内质数的源代码如下:#include"stdio.h"main()main(){ IntI,j。对于(I = 2;我< 99;我+ +){ 对于(j = 2;<我;J + +){ If(I%j==0){ 打破;} 如果(j==I-1){ Printf(“%4d”,I);} ...

用筛选法求100之内的素数,有一个数组名的问题怎么解决?
您说的这一个问题,显然是原程序的笔误了。或者原来定义就该定成a[101],或者这里的<=100应该改成<100,否则,数组超界了。另外,这个程序编的相当糟糕,名为“筛法”,实际上“筛法”的优点全都没有体现。程序结构中大量“多此一举”的操作。筛法的主要优点是不需要反复顺序一个一个挨着判断,而...

c程序设计题 1.用筛选法求100之内的素数。 2.用选择法对10个整数排序...
c程序设计题 1.用筛选法求100之内的素数。 2.用选择法对10个整数排序。 考试题, c程序设计题1.用筛选法求100之内的素数。2.用选择法对10个整数排序。考试题,求准确,详细。... c程序设计题 1.用筛选法求100之内的素数。 2.用选择法对10个整数排序。 考试题,求准确,详细。 展开  我来答 ...

相似回答