编写一个判断素数的函数,主函数中输入一个整数,输出是否是素数的信息

2024-12-01 10:28:25
推荐回答(5个)
回答1:

#include<iostream>

#include<cmath>

using namespace std;

void fun(int a)

{

int k,i;

k=sqrt(a);

for(i=2;i<=k;i++)

if(a%i==0)break;

if(i>k)

cout<<a<<"是素数"<<endl;

else

cout<<a<<"不是素数"<<endl;

}

main()

{

int a;

cout<<"请输入一个整数";cin>>a;

fun(a);

return 0;

}

扩展资料:

return语句有以下形式:

return;//不带返回值的return语句

return 0;//带返回值的return语句,或者返回一个变量或一个函数。

return 1//表示函数异常结束

不带返回值的return语句用于,中断返回值为void类型的函数的执行,而带返回值的return则不行。

#include<iostream>

using namespace std;

void f(){

cout<<"begin"<<endl;

return 0;/*此处有问题,此时return;的作用相当于break;用于中断循环的作用。所以不该返回某个具体的值。*/

cout<<"end"<<endl;

}

int main(){

f();

return 0;

}

将return 0;换为return;后,运行成功:

总结:

return;的作用相当于break;用于中断循环的作用;

return 0;则是return的另一种用法,专用于返回值非void的函数返回其值。

回答2:

/**
 * 编写一个判断素数的函数,主函数中输入一个整数,输出是否是素数的信息
 */
#include 

/**
 * 判断一个数是否是素数
 */
int is_prime_number(int value)
{
int i = 0;

if(value <= 1)
return 0;
for (i=2; i {
if (value%i == 0)
{
return 0;
}
}
return 1;
}

int main(int argc, const char *argv[])
{
int i = 0, num = 0;

printf("\n 请输入一个数: \n"); 
scanf("%d", &num);
if (is_prime_number(num)){
printf("%d 是素数 !\n",num);
}else{
printf("%d 不是素数 !\n",num);
}
printf("\n");  //换行

return 0;
}

回答3:

给你两种答案选择:(都是自己编的,而且经过VC测试的!)
方法一:
#include
void main()
{int i,a,b=0;
scanf("%d",&a);if(a==1)a++;
for(i=0;i<=a;i++)if(a%i==0)b++;
if(b==2)printf("您所输入的数据是一个素数。\n");
else printf("您所输入的数据不是一个素数。\n");
}
方法二:
#include
void main()
{
int a,m,flag=1;
scanf("%d",&a);
for(m=2;m {
if(a%m==0)
{flag=0;
break;}}
if(flag==1)printf("您所输入的数据是一个素数。\n");
else printf("您所输入的数据不是一个素数。\n");
}
}
版主可以二选一皆可;
另外还有一个交互性更加好的:(不过在这个程序中,我是自己定义的几个函数;)
特点一:可以接受用户输入的数据,并且判断是否是素数;
特点二:如果不是素数,能够给用户重新输入的机会;
#include
int PanDuanSuShu(int);//声明一个判断模块,用于判断输入的数据是否是素数;
int RePut(); //声明一个输入模块,并且给用户重新输入的机会;
int PutOut(int); //声明一个输出模块,提示用户的输入数据类型;
int RePanDuan(); //声明一个根据用户的选择判断是否重新接受数据的模块;
void main() //主函数
{
while(1)
{if(PutOut(PanDuanSuShu(RePut()))==1) continue;
else break;} //主函数体;采用循环的方式,给用户重新输入的机会;
}

int PanDuanSuShu(int a)//定义一个判断模块,用于判断输入的数据是否是素数;
{int i,b=0;if(a==1)a++;//针对a=1的特殊情况;
for (i=1;i<=a;i++)if(a%i==0)b++;//循环判断,如果能够找到其它能够整除的数,说明该输入数据不是素数;
if(b==2)return 1; //是素数,返回真;
else return 0;}//不是素数返回假;此处else可省略;

int RePut()//定义一个输入模块,并且给用户重新输入的机会;
{ int a;
printf("请输入一个十进制整数:\n");
scanf("%d",&a);
return a;}

int PutOut(int P) //定义一个输出模块,提示用户的输入数据类型;
{ if(P==0)
{printf("对不起,您所输入的数据不是一个素数;\n");
return RePanDuan();} //此处开始进入根据用户的需要判断是否重新输入的模块;
else {printf("您所输入的数据是一个素数;\n");
return 0;}
}

int RePanDuan()//定义一个根据用户的选择判断是否重新接受数据的模块;
{ printf("您是否需要重新输入数字?需要请按“Y”;不需要请按“N”;谢谢使用;\n");
setbuf(stdin, NULL);
if (getchar()=='Y') return 1;//根据用户端的输入判断;
else return 0;
}

//结束!
以上三种方法均可!

回答4:

#include
#include
int prime( int x);
int main()
{
int x;
scanf("%d", &x);
if(prime(x))
printf("%d is a prime",x);
else
printf("%d is not a prime",x);
}
int prime( int x){
int i,m=sqrt(x);
for(i = 2; i < m; ++i){
if(x%i==0)
return 0;
}
return 1;
}

回答5:

先建立一个初始的素数表,例如:100以内的素数数组,用来快速判断是否是素数
对于超过100的素数,
算法,用不大于根号n的素数,对n进行试除,如果都不能除尽,则为素数