计算机二级--找素数并存储在数组中

  • 一、题目是什么?
  • 二、分析题目
    • 1.分析步骤
    • 2.写入函数


一、题目是什么?

编写函数int fun(int lim, int aa[MAX ]),其功能是求出小于或等于num的所有素数并放在aa数组中,并返回求出的素数的个数。

其中题目已经给出函数体main定义:

如下:

/*--素数存储在aa[]数组中*/
#include
#include
#include
#define MAX 100
int fun(int num, int aa[MAX])
{
	
}

int main(void)
{
	FILE* wf;
	int num, i, sum;
	int aa[MAX];
	system("CLS");
	printf("输入一个整数:");
	scanf("%d", &num);
	sum = fun(num, aa);
	for (i = 0; i < sum; i++)
	{
		if (i % 10 == 0 && i != 0)/*每行输出十个数*/
			printf("\n");
		printf("%5d", aa[i]);
	}
	wf = fopen("out.dat", "w");
	sum = fun(15, aa);
	for (i = 0; i < sum; i++)
	{
		if (i % 10 == 0 && i != 0)/*每行输出十个数*/
			printf("\n");
		fprintf(wf,"%5d", aa[i]);
	}
	fclose(wf);
	return 0;
}


二、分析题目

1.分析步骤

a:找出素数

素数的定义:大于1的自然数,除了1和自身外,其他数都不是它的因子。

所以,我们我们可以得出判断的条件:

imprime)=num%(2~num-1)

num=你确定的范围数

2.判断如果不是素数的情况:

如果我们for循环来判断素数情况的话,在循环结束后,内置的循环变量会j>=i(不断增长的数字),

那样就要存储在数组中:

如下:

if (j >= i)//判断是否为素数,如果不是的话,
					//遍历结束之后,j的值大于等于i的值
		{
			aa[k++] = i;
		}

---------------------------------------------------------------------------------------------------------------------------------

b:存入数组

1.可以在条件满足时,k为数组下标变量,i为遍历变量------>aa[k++]=i;

用后置++这样的好处我们可以简化我们的步骤,使代码看起来更为简洁。

 


2.写入函数

/*--素数存储在aa[]数组中*/
#include
int fun(int num, int aa[])
{
	int i = 0;
	int j = 0;
	int k = 0;//下标变量
	for (i = 2; i <= num; i++)
	{
		for (j = 2; j < i; j++)
		{
			if (i % j == 0)//判断素数的条件
				break;
		}
		if (j >= i)//判断是否为素数,如果不是的话,
					//遍历结束之后,j的值大于等于i的值
		{
			aa[k++] = i;
		}
	}

}

---------------------------------------------------------------------------------------------------------------------------------

完整代码如下:

/*--素数存储在aa[]数组中*/
#include
#include
#include
#define MAX 100
int fun(int num, int aa[MAX])
{
	int i = 0;
	int j = 0;
	int k = 0;//下标变量
	for (i = 2; i <= num; i++)
	{
		for (j = 2; j < i; j++)
		{
			if (i % j == 0)//判断素数的条件
				break;
		}
		if (j >= i)//判断是否为素数,如果不是的话,
					//遍历结束之后,j的值大于等于i的值
		{
			aa[k++] = i;
		}
	}

}

int main(void)
{
	FILE* wf;
	int num, i, sum;
	int aa[MAX];
	system("CLS");
	printf("输入一个整数:");
	scanf("%d", &num);
	sum = fun(num, aa);
	for (i = 0; i < sum; i++)
	{
		if (i % 10 == 0 && i != 0)/*每行输出十个数*/
			printf("\n");
		printf("%5d", aa[i]);
	}
	wf = fopen("out.dat", "w");
	sum = fun(15, aa);
	for (i = 0; i < sum; i++)
	{
		if (i % 10 == 0 && i != 0)/*每行输出十个数*/
			printf("\n");
		fprintf(wf,"%5d", aa[i]);
	}
	fclose(wf);
	return 0;
}

你可能感兴趣的:(C语言基础,c语言)