| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6157 人关注过本帖
标题:求~~~随机产生10个1-100之间不相同的整数,输出所有的素数。
只看楼主 加入收藏
huwengui
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:166
专家分:158
注 册:2011-4-22
结帖率:83.33%
收藏
已结贴  问题点数:10 回复次数:19 
求~~~随机产生10个1-100之间不相同的整数,输出所有的素数。
随机产生10个1-100之间不相同的整数,输出所有的素数。
2011-04-25 16:15
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:0 
是求随机生成的数中的所有素数?
2011-04-25 16:34
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:0 
是随机产生10个100以内的素数?

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-04-25 16:38
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:0 
#include<conio.h>
#include<stdio.h>
#include<time.h>
main()
{int j,i,a[10],b[20],s=0;
for(i=2;i<100;i++)
{for(j=2;j<i;j++)
if(i%j==0)
break;
if(j>=i)
b[s++]=j;}
srand((unsigned)time(NULL));
for(i=0;i<10;i++)
{
for(j=0;j<s;j++)
{if(rand()%100==b[j])
printf("%d,",b[j]);}}
getch();
}
2011-04-25 16:45
吴军林
Rank: 2
等 级:论坛游民
帖 子:14
专家分:12
注 册:2011-4-19
收藏
得分:0 
上面大虾程序我测试了一下,发现了一个问题,就是有时会输出两个同样的数,比如 71,2,71,还希望改进,,,
2011-04-27 15:24
吴军林
Rank: 2
等 级:论坛游民
帖 子:14
专家分:12
注 册:2011-4-19
收藏
得分:0 
我又发现了问题,第一,你产生的10个数不是1-100之间的数,而是0-32767之间的数,第二,你只是随机产生10个数,但没有排除这10个数中可能还有相同的数,换句话说,你可能第一次产生的是71,第二次产生的还是71,这就是为什么你的程序在运行时会出现几个相同的数,谢谢,,,,
2011-04-27 15:49
jeff2002
Rank: 1
等 级:新手上路
帖 子:1
专家分:2
注 册:2011-4-28
收藏
得分:2 
#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");


}
2011-04-28 13:34
cacker
该用户已被删除
收藏
得分:2 
提示: 作者被禁止或删除 内容自动屏蔽
2011-04-28 15:42
cacker
该用户已被删除
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2011-04-28 15:43
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:2 
以下是引用ansic在2011-4-25 16:38:07的发言:

是随机产生10个100以内的素数?


程序代码:
                if(isp(random)==true) {
                        a[i]=random;
                        i++;
                        len--;
                }
        }

//Sort ...
        for(i=0;i<9;i++) {
                for(j=i+1;j<10;j++) {
                        if(a[i]>a[j]) { m=a[i];a[i]=a[j];a[j]=m; }
                }
        }

//Delete repeat number in array
        i=0,j=0,k=0,len=10;
        while(i<len) {
                if(a[i]==a[i+1]) {
                        i++;
                        k++;
                continue;
                }
                a[j]=a[i];
                j++;
                i++;
        }

//Add differnet random prime number in array.
        len-=k;
        do {
                random=rand()%(100-1)+1;

                if(isp(random)==false) continue;

                for(i=0;i<len;i++) {
                        if(a[i]!=random) {
                                j++;
                        }
                }

                if(j==len) {
                        a[len]=random;
                        len++;
                        j=0;
                        count++;
                }else{
                        j=0;
                }

        }while(count!=k);

//display 10 different random prime number.
        for(i=0;i<len;i++) {
                printf ("%i ",a[i]);
        }

        printf ("\n");

        return 0;

}
//Function isp,judge prime
bool isp (int n) {
        bool result=true;
        int i;
        for(i=n-1;i>1;i--) {
                if(n%i==0) {
                        result=false;
                        break;
                }
        }
        return result;
}
root@~ #./randarray.exe
2 5 23 29 41 53 59 97 67 3
root@~ #./randarray.exe
1 2 13 19 67 73 79 83 89 37
root@~ #./randarray.exe
2 13 23 41 53 73 79 97 11 89
root@~ #


[ 本帖最后由 ansic 于 2011-4-28 18:07 编辑 ]

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-04-28 17:06
快速回复:求~~~随机产生10个1-100之间不相同的整数,输出所有的素数。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.046829 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved