编写一个函数实现判断一个整数是否是素数。如果输出也在函数内进行,才需要把数组传到函数中,否则只要传数组元素就可以了。
创新互联作为成都网站建设公司,专注网站建设、网站设计,有关企业网站建设方案、改版、费用等问题,行业涉及柔性防护网等多个领域,已为上千家企业服务,得到了客户的尊重与认可。
你原来的程序问题在于:
1. 缺少#include"math.h"。因为用到了sqrt();
2. if(ss(a[i])==1)语句中调用函数ss的格式与定义不符:a[i]不能传给a,且缺第二的参数。
3. 判断素数时,没有考虑对数字1的处理。
输出在主程序中进行的话,参考White_MouseYBZ网友的回答,进行修改即可。
如果打印也在函数中进行,原程序可改为:
#include"stdio.h"
#include"math.h" //增加
main()
{
int a[10],n,i;
void ss(int a[],int n);
scanf("%d",n);
for(i=0;in;i++)
scanf("%d",a[i]);
ss(a,n);//调用函数,判断并输出
/× for(i=0;in;i++) //整体删除
if(ss(a[i])==1)
printf("%d\n";a[i]); ×/
}
void ss(int a[],int n) //无需返回值,改成void
{ int k,i,j,result;
for(i=0;in;i++)
{ if(a[i]!=1) //避免1判断为素数
{ k=sqrt(a[i]);
for(j=2;j=k;j++)
if(a[i]%j==0) break;
if(jk) printf("%d ",a[i]); //输出素数
}
}
}
先编写一个判断素数的函数,类型为bool型
bool Isprime(int number)
{
for (int i = 2; i number; i++)
if (number mod i != 0)
return false;
return true;
}
上面的代码还可以继续优化,只是给你提供个思路
然后在主函数里面循环调用这个函数 比如数组num[N] 循环N次,将num[i] 作为参数调用上面的函数,然后看返回值,如果未true 素数的个数+1,就可以了
#include stdio.h
int main(){
int a=0; // 素数的个数
int num=0; // 输入的整数
printf("输入一个整数:");
scanf("%d",num);
for(int i=2;inum;i++){
if(num%i==0){
a++; // 素数个数加1
}
}
if(a==0){
printf("%d是素数。\n", num);
}else{
printf("%d不是素数。\n", num);
}
return 0;
}
先编写一个判断素数的函数,类型为bool型
bool Isprime(int number)
{
for (int i = 2; i number; i++)
if (number mod i != 0)
return false;
return true;
}
上面的代码还可以继续优化,只是给你提供个思路
然后在主函数里面循环调用这个函数 比如数组num[N] 循环N次,将num[i] 作为参数调用上面的函数,然后看返回值,如果未true 素数的个数+1,就可以了