二楼的好像没有注意到是产生1-100之间的10个随机数,且不能相同,这是前提,如果你产生的不是这十个数,即使输出
符合条件的素数也是不符合条件的吧。。。
符合条件的素数也是不符合条件的吧。。。
程序代码:#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void main(){
int i=0,j,temp,k=0;
int a[10]={0};
int flag=0;
while(i<10){
flag = 0;
temp = rand()%100+1;
for(j=0;j<=k;j++){
if(temp == a[j]){
flag = 1;
break;
}
}
if(!flag){
a[k++] = temp;
for(j=2;j<sqrt(temp);j++){
if(temp % j ==0){
break;
}
}
if(j>=sqrt(temp)){
printf("%d是素数\n",temp);
i++;
}else{
printf("%d不是素数\n",temp);
i++;
}
}
}
for(i = 0 ;i<10;i++){
printf("%d ",a[i]);
}
printf("\n");
}
程序代码:#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>
//--判断素数
int isPrime(int n)
{
int i,k;
k=sqrt(n);
for(i=2;i<=k;i++)
if(n%i==0)return 0;
return 1;
}
//--建立100以内的素数数组
int PrimeArray(int a[])
{
int i,n=1;
a[0]=2;
for(i=3;i<100;i+=2)
if( isPrime(i) ) a[n++]=i;
return n;
}
//--输出数组
void printa(int a[],int n)
{
int i;
for(i=0;i<n;i++)
printf("%4d",a[i]);
printf("\n");
}
void main()
{
int a[30]={0},b[10],i,k,n,n0,t;
n0=n=PrimeArray(a);
srand(time(0)); //随机初始化函数
for(i=0;i<10;i++)
{
k=rand()%n; //随机函数
b[i]=a[k];
t=a[k];a[k]=a[n-1];a[n-1]=t; //把选中的素数交换的最后
n--;
}
printa(b,10);
}