【win32程序控制台】练习题:用随机函数产生10个互不相同的两位整数,存到一维数组中,并找出其中的素数

时间:2022-03-20 21:43:58

/ * 程序的版权和版本声明部分 
  * Copyright (c) 2012, 华南师范大学软件工程专业  
  * All rights reserved. 
  * 文件名称:用随机函数产生10个互不相同的两位整数,存到一维数组中,并找出其中的素数                            
  * 作    者:Hookc                              
  * 完成日期:2012  年3  月 30 日 
  * 版 本 号:1          
  * 对任务及求解方法的描述部分 
  * 输入描述:
  * 问题描述:  
  * 程序输出:产生两位数的随机数,输出这10个随机数里面的素数 
  * /

#include<iostream>
#include<cstdlib>                  //srand()和rand()函数头文件
#include<time.h>                   //系统time()函数头文件
#include<cmath>
using namespace std;

int random[10];

void Save_Random()
{
	srand((unsigned) time(NULL));          //设置种子值
	for(int i=0;i<10;i++)
	{
		int n;
		random[i]=10+rand()%90;        //获取随机数10~100
		for(n=0;n<i;n++)               //用这个循环来判断有无重复的数
	    if(random[i]==random[n])
		{ 
			i--; break; 
		}                              //如果有重复的数,i--,退回去,重新生成一个数,并重新判断有无重复的数
	}
}

void Judge_PrimeNum()
{
	int j;
	for(int i=0;i<10;i++)
	{
		for(j=2;j<=(int)sqrt((double(random[i])));j++)    //加上(double),避免sqrt运算重载
			if(random[i]%j==0)
				break;
		if(j>(int)sqrt((double)random[i])&&random[i]!=1)
			cout<<random[i]<<endl;
		 
		//写法二:
		/*j=2;
		while(j<=(int)sqrt((double)random[i]) && random[i]%j!=0) 
		{ 
			j++; 
		} 

		if(j>(int)sqrt((double)random[i])) //加上(double)
		{
			cout<<random[i]<<" "; 
		}*/
	}
	cout<<endl;  
}

int main()
{
	int i;
	Save_Random();
	cout<<"所产生的10个互不相同的二位随机整数为: "<<endl; 
	for(i=0;i<10;i++) 
	{ 
		cout<<random[i]<<" "; 
	} 
    cout<<endl; 
	cout<<"其中的素数为: "<<endl; 
	Judge_PrimeNum();
	system("pause");
	return 0;
}

    在这个程序中,第一次接触到了产生随机数的函数,了解了利用系统时间制造随机数的原理以及函数重载中sprt不存在sqrt(int)类型等问题,结合之前学到的从数组里面找出素数的方法,更深刻地理解了这个程序。

  VC 2008后为重载函数,原型为 float sqrt (float),double sqrt (double),double long sqrt(double long) 

  注意没有int sqrt (int)【引用自:百度百科 条词:平方根计算】