c语言 编写一个函数 搜索出一组数中的素数 并将它保存到另一个数组中
要求:编写一个函数unsignedintsearch_prime(参数1,参数2,参数3)1.传入数组数据给search_prime函数,search_prime函数执行...
要求:编写一个函数unsigned int search_prime(参数1,参数2,参数3)
1.传入数组数据给search_prime函数,search_prime函数执行完后保存结果到另一个数组中。
2.函数中数组的元素访问使用指针访问,不要用[ ]访问。
3.参数3为输入数组的长度
4.返回搜索到的质数数目 展开
1.传入数组数据给search_prime函数,search_prime函数执行完后保存结果到另一个数组中。
2.函数中数组的元素访问使用指针访问,不要用[ ]访问。
3.参数3为输入数组的长度
4.返回搜索到的质数数目 展开
2个回答
展开全部
//这个给你参考
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<assert.h>
#include<memory.h>
bool is_prime(unsigned int n)
{
if(n<2)
{
return false;
}
unsigned int ncnt=(unsigned int)sqrt(n*1.0);
for(unsigned int i=2;i<=ncnt;i++)
{
if(n%i==0)
return false;
}
return true;}
unsigned int search_prime(int* src,int* res,int n)
{
// assert(src!=NULL&&res!=NULL); //
memset(res,0,sizeof(int)*n);
unsigned int ncnt=0;
for(int i=0;i<n;i++)
{
if(is_prime(*src))
{
*res++=*src;
++ncnt;
}
src++;
}
return ncnt;
}
int main()
{
int test[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
int res[20]={0};
int ncnt=search_prime(test,res,20);
printf("%d\n",ncnt);
for(int i=0;i<ncnt;i++)
{
printf("%d ",res[i]);
}
printf("\n");
return 0;}
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<assert.h>
#include<memory.h>
bool is_prime(unsigned int n)
{
if(n<2)
{
return false;
}
unsigned int ncnt=(unsigned int)sqrt(n*1.0);
for(unsigned int i=2;i<=ncnt;i++)
{
if(n%i==0)
return false;
}
return true;}
unsigned int search_prime(int* src,int* res,int n)
{
// assert(src!=NULL&&res!=NULL); //
memset(res,0,sizeof(int)*n);
unsigned int ncnt=0;
for(int i=0;i<n;i++)
{
if(is_prime(*src))
{
*res++=*src;
++ncnt;
}
src++;
}
return ncnt;
}
int main()
{
int test[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
int res[20]={0};
int ncnt=search_prime(test,res,20);
printf("%d\n",ncnt);
for(int i=0;i<ncnt;i++)
{
printf("%d ",res[i]);
}
printf("\n");
return 0;}
追问
呃呃呃…看不懂啊…我是出学…才学到指针
追答
哪里有问题?
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
给你个例子 自己改改, 编程不动脑子是永远学不会的
#include <iostream.h>
#include <math.h>
void Sprint(int &);
int main()
{
int num=0;
cin>>num;
while(num)
{
Sprint(num);
cout<<endl;
cin>>num;
}
return 0;
}
void Sprint(int &n)
{
int i=1,j=0,judg=1;
for(i=2;i<=n;judg=1,i++)
{
for(j=2;j<=(int)sqrt(i);j++)
if(i%j==0 && i!=j)
judg=0;
if(judg)
cout<<i<<'\t';
}
}
#include <iostream.h>
#include <math.h>
void Sprint(int &);
int main()
{
int num=0;
cin>>num;
while(num)
{
Sprint(num);
cout<<endl;
cin>>num;
}
return 0;
}
void Sprint(int &n)
{
int i=1,j=0,judg=1;
for(i=2;i<=n;judg=1,i++)
{
for(j=2;j<=(int)sqrt(i);j++)
if(i%j==0 && i!=j)
judg=0;
if(judg)
cout<<i<<'\t';
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询