编程计算并输出 100~999 之间的所有素数(每个数占 6 位宽度),最后并
输出素数的个数(单独占一行)。 编程要求如下:
①定义符号常量:N=999;
②定义复合语句 1:外循环 for(;exp1;)控制项数值(100~999),exp1 用到逻辑运算的
特殊规则,形如 a&&b;内循环 while(exp2)实现计算各数是否素数,是素数时则输出该素数,
并统计素数的个数;每行输出 10 个素数(用 if 语句控制),每个数占 6 列宽,最后换行输出
素数个数。
③定义复合语句 2:外循环 for(;;)控制项数值(100~999),循环条件省略;内循环
while(exp1)实现计算各数是否素数,是素数时则输出该素数,并统计素数的个数;每行输出
10 个素数(用 if 语句控制),每个数占 6 列宽,最后换行输出素数的个数。
④定义复合语句 3:外循环 for(;exp;)控制项数值(100~999),exp 用到逻辑运算的特殊
规则,形如 a&&b;内循环 for(;;),循环条件省略,内循环实现计算各数是否素数,是素数时
则输出该素数,并统计素数的个数;每行输出 10 个素数(用 if 语句控制),每个数占 6 列宽。
最后换行输出素数的个数。
#include<stdio.h>
#include<math.h>
int main(){
int i,j,n,s;
for(i=100;i<=999;i++){
for(j=2;j<=sqrt(i);j++)
if(i%j==0) break;
if(j>sqrt(i)){
printf("%d ",i);
n++;s++;
}
}printf("\n");
printf("\n100~999之间的素数个数为%d",s);
return 0;
}
两个方式你参考一下
1.使用外层for循环和内层while循环实现
using System;
namespace PrimeNumber
{
class Program
{
static void Main(string[] args)
{
const int N = 999; // 符号常量N的值为999
int count = 0; // 统计素数的个数
for (int i = 100; i <= N; i++)
{
int j = 2;
while (i % j != 0 && j <= i / 2)
{
j++;
}
if (j > i / 2)
{
Console.Write("{0,6}", i); // 输出素数,每个数占6列宽
count++;
if (count % 10 == 0)
{
Console.WriteLine(); // 每行输出10个素数
}
}
}
Console.WriteLine("\n素数的个数为:" + count); // 换行输出素数的个数
Console.ReadKey();
}
}
}
2.使用外层for循环和内层while循环实现,循环条件省略
using System;
namespace PrimeNumber
{
class Program
{
static void Main(string[] args)
{
const int N = 999; // 符号常量N的值为999
int count = 0; // 统计素数的个数
for (int i = 100; ; i++)
{
if (i > N)
{
break;
}
int j = 2;
while (i % j != 0 && j <= i / 2)
{
j++;
}
if (j > i / 2)
{
Console.Write("{0,6}", i); // 输出素数,每个数占6列宽
count++;
if (count % 10 == 0)
{
Console.WriteLine(); // 每行输出10个素数
}
}
}
Console.WriteLine("\n素数的个数为:" + count); // 换行输出素数的个数
Console.ReadKey();
}
}
}