永发信息网

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; //都不能整除返回是
}
全部回答
  • 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开始到该数开方之间的素数。这样效率会高很多。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯