二楼的好像没有注意到是产生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); }