#include<stdio.h>
#include<math.h>
int num1[800]; //定义随机抽取50个数据数组
int num2[100]; //定义素数素组
randomx(int m,int min,int max) //产生m个不重复随机数
{
int i,w,t;
int total;
srand(time(0)); //设定随机种子,防止重复数据出现
for(i=min;i<max;i++)
{
num1[i]=i+1;
}
for(i=0;i<m;i++)
{
num1[i] =rand()%(max-min)+min; //随机函数rand引用
}
printf("随机从100到900中选取以下50个数值:");
for(i=0;i<m;i++)
{
printf("%d ",num1[i]);
}
printf("\n");
}
prime() //判断是否为素数,并且进行排序
{
int i,k,t,n=0;
int a,b,c;
for(i=0;i<50;i++) //判断是否为素数
{
k = sqrt(num1[i]);
for(t=2;t<k;t++)
{
if(k%t==0)
{
break;
}
}
if(t>=k)
{
num2[n]= num1[i];
printf("%d ",num2[n]);
n++;
}
}
for(a=0;a<n;a++) //从大到小排列数据
{
for(b=a+1;b<n;b++)
{
if(num2[a] < num2[b])
{
c = num2[a];
num2[a] = num2[b];
num2[b] = c;
}
}
}
printf("\n");
printf("其中素数按从大到小的数值排列:");
for(i=0;i<n;i++)
{
printf("%d ",num2[i]);
}
}
main()
{
randomx(50,100,900);
prime();
}
问题原因分析:
可能没有将判断出来的素数数值进行保存,起码要定义2个数组分别保存随机产生的出来的50个数据,和其中素数的数据,上面是我给出的代码。
运行结果图: