大家好,又见面了,我是你们的朋友全栈君。
质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数。最小的质数是2,它也是唯一的偶数质数。
原理:number 只需被 (2 ~ 根号下number)之间的每一个整数去除就可以了(包括 根号下number这个数)。如果 nummber不能被 (2 ~ 根号下number) 间任一整数整除,number 必定是素数
#include"stdio.h"
#include"math.h"
main()
{
int number,i,n;
printf("请输入一个正整数:\t");
scanf("%d",&number);
while(number>0)//输入0或小于0的数,结束循环
{
n=(int)sqrt(number);//开平方
if(number==1)
{
printf("1既不是素数,也不是合数\n");//注:1既不是素数,也不是合数
scanf("%d",&number);
continue; //跳出这一次循环
}
for(i=2;i<=n;i++) //2和3的开平方分别为1.414和1.732,不满足循环条件(i<=n)
{
if(number%i==0)
break;
}
if(i>n) //i=2,2和3满足(i>n),所以是素数
printf("%d是素数\n",number);
else
printf("%d不是素数\n",number);
printf("请输入一个正整数:\t");
scanf("%d",&number);
}
}
运行:
2.以下是函数形式
#include"stdio.h"
#include"math.h"
void find_prime(int number)
{
int n,i;
n=(int)sqrt(number);
for(i=2;i<=n;i++)
{
if(number%i==0)
break;
}
if(i>n)
printf("%d是素数\n",number);
else
printf("%d不是素数\n",number);
}
void main()
{
int number;
printf("请输入大于一的正整数:\t");
scanf("%d",&number);
if(number>1)
find_prime(number);
else if(number==1)
printf("1既不是质数,也不是合数\n");
else
printf("请输入大于一的正整数\n");
}
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/126465.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...