C语言 (求一百以内的素数) 问题分析!!

#include "stdio.h"
void main()
{

int n;
int i,num=0;
for(n=2;n<=100;n++)
{
for(i=2;i<=n-1;i++)
{
if(n%i==0)
break;
}
if(i==n)
{ printf("%d\t",n);
num++;
if(num%5==0)
printf("\n");
}

}
}

素数是除1和它本身没有其他的因子
分析:先是for 语句中n从2到100,这表示从1-100内的范围。第二个for 语句是i从2到n-1分别试商(n%i是表示取n除i的余数值为0 表示能够整除) 当能够整除是这个数就不是素数用break语句跳出本层循环(for (i=2;i<n-1;i++))到最外层循环(是n+1后在循环 )如果从2到n-1都没有整除的情况那i=n-1是不循环但仍然要再运算i++最后i=n ,判断i==n则num加1(num的作用是控制每行输出5个数)(printf("\n")起换行的作用)。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-07-20
素数是除1和它本身没有其他的因子
分析:先是for
语句中n从2到100,这表示从1-100内的范围。第二个for
语句是i从2到n-1分别试商(n%i是表示取n除i的余数值为0
表示能够整除)
当能够整除是这个数就不是素数用break语句跳出本层循环(for
(i=2;i
评论
0
0
0
加载更多
第2个回答  2019-10-09
#include
"stdio.h"
void
main()
{
int
n,i,num=0;
//定义需要用到的临时变量
for(n=2;n<=100;n++)
//需要计算的范围是1-100,从2开始是因为任何数都能被1除.
{
for(i=2;i<=n-1;i++)
//内循环,假设外循环n=54,内循环计算的就是2-54之间的数能否被54除.
{
if(n%i==0)
//范围内任何数能整除都不是素数
break;
}
if(i==n)
//直到该数本身之前都没有被整除,那么就是素数,打印到窗口中.
{
printf("%d\t",n);
num++;
if(num%5==0)
//每5个素数就换一行显示
printf("\n");
}
}
}
这个算法可以改进,算法请自行百度之.有问题请追问
第3个回答  2019-10-12
#include
"stdio.h"
void
main()
{
int
n;
int
i,num=0;
for(n=2;n<=100;n++)//循环执行2-100
{
for(i=2;i<=n-1;i++)
{
if(n%i==0)//如果n能被2到n-1之内的数整除,则跳出这个循环
break;
}
if(i==n)
{
printf("%d\t",n);
num++;
if(num%5==0)//每输出5个数就换一行
printf("\n");
}
}
}
这个程序的意思即使是2-100以内的数除所有从2到比这个数小的整数。如果能整除这不是素数,反之就是素数。然后输出这些数字(每行5个)。
第4个回答  2010-01-18
#include "stdio.h"
#include "math.h"
void main()
{

int n;
int i,num=0;
int nup;
for(n=2;n<=100;n++)//遍历2-100
{
nup=sqrt(n);//开方
for(i=2;i<=nup;i++)//用2到根号n分别出n,如果都不能被除尽就是素数
{
if(n%i==0)
break;
}
if(i==n)//如果i==n说明没有执行if(n%i==0)break;也就是是素数
{ printf("%d\t",n);
num++;
if(num%5==0)//每五个换行输出
printf("\n");
}