
这个题的算法是:你如果想求证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语言程序"、如图,求素数的这个程序是什么原理等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)