C语言随机生成十个整数,判断是否为素数,将二者存于一维数组中并输出

C语言随机生成十个整数,判断是否为素数,将二者存于一维数组中并输出

1. 如何在C语言中产生随机数;

利用随机数种子,其函数原型为:srand((unsigned int)(time(NULL))
现在的C编译器都提供了一个基于ANSI标准的伪随机数发生器函数,用来生成随机数。它们就是rand()和srand()函数。他们的工作过程如下:

》首先给srand()提供一个种子,它是一个unsigned int类型,其取值范围从0~65535;
》然后调用rand(),它会根据提供给srand()的种子值返回一个随机数(在0到32767之间)
》根据需要多次调用rand(),从而不间断地得到新的随机数;
》srand()提供一个新的种子是随时都可以的,从而进一步“随机化”rand()的输出结果。

2. 判断一个数是否是素数;
一共两种方式
》n能否被2~n-1整除
》n能否被2~√n整除

来一个题目小试牛刀

题目如下:调用随机函数产生 10 个 1-100 之间的整数,找出其中所有的素数并保存到一维数组 w 中。输出随机产生的十个原始数据及找到的素数。
要求:
第一行输出随机产生的十个原始数据,第二行输出素数的个数,第三行输出找到的素数,中间用空格隔开。

贴上代码仅供参考:

#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#pragma warning(disable:4996)
int prime(int n)
{
	int i;
	int flag = 0;
	if (n < 2) 
	{
		flag = 0;
	}
	else 
	{
		for (i = 2; i < n; i++) 
		{
			if (n % i == 0)//如果用可以除尽的数,则非素数
				break;
		}
		if (i < n) 
		{
			flag = 0;
		}
		else
			flag = 1;
	}
	return flag;
}
void f(int* HArr, int len)
{
	int i;
	for (i = 0; i < len; ++i)
		printf("%d ", *(HArr + i));  
	printf("\n");
}

int main() {
	int i,k=0;
	int a[10];
	int b[10];
	srand((unsigned)time(NULL));
	for (i = 0; i < 10; i++)
	{
		a[i] = rand() % 100 + 1;
		if (prime(a[i]))
		{
			b[k] = a[i];
			k++;
		}
		
	}
	f(a,10);
	printf_s("素数一共有%d个\n", k);
	f(b, k);
	return 0;
}
上一篇:李宏毅机器学习03、04-误差和梯度下降


下一篇:对拍