请教:请解释一下下面这个求素数的C语言程序中注释部分

请教:请解释一下下面这个求素数的C语言程序中注释部分,第1张

这个题的算法是:你如果想求证m是不是为素数,它只要能被1到本身m之间的任一个数整除就说明m不是素数

又因为1到m之间,故i>2,且小于m,如果有k能被整除,则ip<m(p为另一个因数) ;

所以只需求到m的平方根k就行

根据循环如果到k如果吗还没有被整除,说明m就没有除了1和m本身其他的因数,即它是素数(因为如果K+1到m能除尽m,则必须有一个在1到k+1之间的相对应的值i使得他们乘积为m)

因此如果i>k+1,则说明m为素数

12345678910111213141516171819

// 素数,也叫质数,就是指除了1和该数本身以外,不能被其他任何整数整除的正数 #include<stdioh>#include<mathh>void main(){    int m, k, i, n=0;    for(m=1; m <= 200; m=m+2)    {        k = sqrt(m);        for(i=2; i <= k; i++)        if(m % i == 0)    break;        if(i >= k + 1)        {            printf("%5d",m);            n = n + 1;        }    }}

请放心使用,有问题的话请追问

满意请及时采纳,谢谢,采纳后你将获得5财富值。

你的采纳将是我继续努力帮助他人的最强动力!

这是求素数的方法, 就是从先取一个数,然后用2一直到它的本身作为除数去尝试看看能否被整除,如果其中有一个数被整除了,就说明这个不是素数。

if( a>=i ) 表明了从2到它本身,没有一个能整除的,因为最后一次循环是a=i,如果a=i,就表示已经找到它本身了,所以它就是素数。

我感觉这算法可以改一下,应该从2到它本身的一半如果没有找到,就表示没有可以整除的了,这样可以节省时间

看那个ifelse语句。怎么是这样呢?如果能被i整除,肯定不是素数,退出循环。

如果不能被i整除就应该继续循环,检查比i小的数。直到最后i=1时,才可以判断a是素数。

如下这样改:

for(i=a-1;i>=2;i--)

if(a%i==0)

{

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

break;

}

if(i==1)cout<<a<<"是素数";

质数又称素数。一个大于1的自然数,如果除了1和它自身外,不能被其他自然数整除的数;否则称为合数。根据算术基本定理,每一个比1大的整数,要么本身是一个质数,要么可以写成一系列质数的乘积;而且如果不考虑这些质数在乘积中的顺序,那么写出来的形式是唯一的。下面是一个java求100之内的素数简单示例。

public class test {

public static void main(String[] args) {

int i,n,k=0;

for (n = 3; n<=100; n++) {     //3~100的所有数

i=2;

while (i<n) {

if (n%i==0)  break;  //若能整除说明n不是素数,跳出当前循环

i++;

}

if (i==n) {     //如果i==n则说明n不能被2~n-1整除,是素数

k++;             //统计输出数的个数

Systemoutprint(i+ "\t ");

if (k %6==0)    //每输出5个则换行

Systemoutprintln();

}

}

}

}

你的C语言求素数的程序我帮你改完了(仅两处错误),你看看吧(改动的地方见注释)

#include<stdioh>

#include<mathh>

int main()

{

 int n,i=1;

 int r;//这里float r;改成int r;因为整数除以整数所得余数还是整数

 printf("input a number n=");

 scanf("%d",&n);

 for(i=2;i<=n-1;)

 {

  r=n%i;

  if(r==0)

  {

   printf("%d不是素数\n",n);

   return 0;

  }

  else

  {

   i=i+1;

   if(i>sqrt(n))

   {

    printf("%d是素数\n",n);

    return 0;

   }

   //else//这里去掉else语句块,因为如果i>sqrt(n)n就是素数,如果i<sqrt(n)应该让程序自动执行下去

   //{

    //return(n);

   //}

  }

 }

}

#include<stdioh>

#include<mathh>

int main()

{

int i, n, m, j = 1;

for(n = 3; n < 1000; n++) //外循环

{

m = sqrt(n);//初始化m,i;

i = 2;

do

{

if(n % i == 0) //内循环

break;

i++;

}

while(i <= m);

if(i > m) //判断素数并输出

{

printf("%3d ", n);

if(j % 25 == 0) //第五第六项不能同时满足

printf("\n");

j++;

}

}

}

以上就是关于请教:请解释一下下面这个求素数的C语言程序中注释部分全部的内容,包括:请教:请解释一下下面这个求素数的C语言程序中注释部分、求"求素数的C语言程序"、如图,求素数的这个程序是什么原理等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10047718.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-04
下一篇2023-05-04

发表评论

登录后才能评论

评论列表(0条)

    保存