| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 537 人关注过本帖
标题:请问 将大于m 且紧靠m的k个素数存入数组xx传回
只看楼主 加入收藏
wymyhome
Rank: 1
等 级:新手上路
帖 子:29
专家分:4
注 册:2009-7-8
结帖率:84.21%
收藏
已结贴  问题点数:10 回复次数:1 
请问 将大于m 且紧靠m的k个素数存入数组xx传回
题目要编写一个 函数  将大于m 且紧靠m的k个素数存入数组xx传回。 例如:若输入17 5 则应输出:19,23,29,31,37。  我写的 这样 但是结果总是不对。答案提供的中间有while循环 但是不太会用。。能否给我指出 一个用for 循环解决的办法 #include <conio.h>
#include <stdio.h>
void readwriteDat();
void num(int m, int k, int xx[])
{
int i,j,n=0;
for(i=m+1;i<=m+k;i++)
  for(j=2;j<i;j++)
     if(i%j==0)/*并没有要求程序的速度。所以我直接从2除到本身求素数,这样比较方便*/
         break;
     else

       xx[n]=i;
        n++;

           
         
           
           
}
main()
{
    int  m, n, xx[1000];
    printf("\nPlease enter two integers:");
    scanf("%d%d", &m, &n);
    num(m, n, xx);
    for (m=0; m<n; m++)
        printf("%d ", xx[m]);
    printf("\n");
    readwriteDat();
}
void readwriteDat()
{
    int  m, n, xx[1000], i;
    FILE  *rf, *wf;
    rf = fopen("in.dat", "r");
    wf = fopen("out.dat", "w");
    for (i=0; i<10; i++)
    {
        fscanf(rf, "%d %d", &m, &n);
        num(m, n, xx);
        for (m=0; m<n; m++)
            fprintf(wf, "%d ", xx[m]);
        fprintf(wf, "\n");
    }
    fclose(rf);
    fclose(wf);
}
  

[ 本帖最后由 wymyhome 于 2009-9-21 10:37 编辑 ]
搜索更多相关主题的帖子: include 
2009-09-21 10:26
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
收藏
得分:10 
程序代码:
#include<stdio.h>          
#include<malloc.h>         
#include<stdbool.h>        
#include<math.h>           
bool IsPrime(int n)        
{                          
    if( n==2||n==3||n==5)  
        return true;       
    if(( (n-1)%6==0 ||(n-5)%6==0)&& n>=7)
    {                                    
        for(int i=2;i<=sqrt(n);i++)      
            if( n % i == 0 )             
                return false;            
        return true;                     
    }                                    
    return false;                        
}                                        
int * num ( int m, int k)                
{                                        
    int *a=(int *)malloc(sizeof(int)*k+1);
    int n=0,s=m+1;                        
    while(1){                             
        if( IsPrime(s))                   
        {                                 
            a[n++]=s;                     
        }
        if( n== m)
            break;
        s++;
    }
    return a;
}


int main()
{
    int m,k,i;
    scanf("%d%d",&m,&k);
    int *p=num(m,k);
    for(i=0;i<k;i++)
    {
        printf("%d ",p[i]);
    }
    putchar('\n');
    return 0;
}
2009-09-21 11:23
快速回复:请问 将大于m 且紧靠m的k个素数存入数组xx传回
数据加载中...
 
   



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

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