/ * 程序的版权和版本声明部分 * 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)【引用自:百度百科 条词:平方根计算】