C语言中怎么判断素数
答案:3 悬赏:0 手机版
解决时间 2021-02-24 07:07
- 提问者网友:别再叽里呱啦
- 2021-02-23 14:02
C语言中怎么判断素数
最佳答案
- 五星知识达人网友:舊物识亽
- 2021-02-23 15:08
从1开始遍历到该数的开方,如果找到一个数能整除该数,证明这不是个素数,看看以下代码
#include //头文件为math.h
int isprime(int a)
{
int i;
for (i = 2; i <= sqrt((long double)a); ++i)
{
if (a % i == 0)
{
return 0; //能整除就返回不是
}
}
return 1; //都不能整除返回是
}
#include
int isprime(int a)
{
int i;
for (i = 2; i <= sqrt((long double)a); ++i)
{
if (a % i == 0)
{
return 0; //能整除就返回不是
}
}
return 1; //都不能整除返回是
}
全部回答
- 1楼网友:野慌
- 2021-02-23 16:12
代码如下:
#include <stdio.h>
#include <conio.h>
void main()
{
long m,n=2;
double l;
printf("please input an number: \n");
scanf("%d",&m);
for(n=2;n<=m;n++) //这里设置n<=m,是要将2到输入值之间所有的数拿来整除m
{
l=m%n;
if(l==0) //这里,得到余数为0的时候
break; //跳出循环
}
if(n<m) //如果被除数n小于输入值m,那么m肯定有除了1和本身外别的约数,所以下面不是素数
printf("不是素数\n");
else //另外的,如果n不小于m,那只有可能等于m,那么m就不会有别的约数
printf("是素数\n");
getch();
}
首先要清楚什么是素数,素数就是只能被1和自己整除的数字,那么:
我的思路是,首先定义一个变量m存储你输入的数值,然后,从2开始到m依次去作为m的除数,如果在这个过程中有一个数字l能整除m,那么跳出循环,跳出之后判断l是否等于m,如果不等于,那么不是素数,如果相等那么是素数
- 2楼网友:玩家
- 2021-02-23 16:05
楼上说的不错,判断一个数是否是素数就这么算就行。但是楼上程序写的有瑕疵,sqrt不应该写在for里面,而是在for前面赋值,因为sqrt很耗时间。
如果是求类似于1000以内有多少个素数的话,每个素数的判断方式就不是判断是否能整除从2开始到该数的开方,而是判断是否能整除从2开始到该数开方之间的素数。这样效率会高很多。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯