#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的函数返回其值。
/**
* 编写一个判断素数的函数,主函数中输入一个整数,输出是否是素数的信息
*/
#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;
}
给你两种答案选择:(都是自己编的,而且经过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;
}
//结束!
以上三种方法均可!
#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;
}
先建立一个初始的素数表,例如:100以内的素数数组,用来快速判断是否是素数
对于超过100的素数,
算法,用不大于根号n的素数,对n进行试除,如果都不能除尽,则为素数