93c16edb5a
- 修正主README.md中的所有路径引用,使其与当前文件结构一致 - 更新翁凯C语言学习指南链接路径 - 更新五子棋AI项目文档链接路径 - 更新数据结构学习文档链接路径 - 修正编译说明和学习模块使用指南中的目录路径 - 改进五子棋README.md的编译运行说明,增加Windows和Linux/macOS的分平台指导 - 确保所有文档链接和路径引用都能正确工作
76 lines
1.4 KiB
C
76 lines
1.4 KiB
C
#include <stdio.h>
|
||
#include <stdlib.h>
|
||
#include <time.h>
|
||
#include <math.h>
|
||
#include <stdbool.h>
|
||
|
||
// !判断能被已知的且为素数的数整除(构造素数表)
|
||
/*
|
||
欲构造n以内的素数表
|
||
1.令x=2
|
||
2.将2x、3x、4x直至ax<n的数标记为非素数
|
||
3.令x为下一个没有被标记为非素数的数,重复步骤2;直到所有的数都已经尝试完毕
|
||
*/
|
||
|
||
// !数组的赋值
|
||
/*
|
||
数组赋值有两种方式
|
||
1.用赋值号直接赋值
|
||
2.用循环赋值
|
||
例如:
|
||
int a[10]={1,2,3,4,5,6,7,8,9,10};
|
||
int b[10];
|
||
for(int i=0;i<10;i++)
|
||
{
|
||
b[i]=a[i];
|
||
}
|
||
数组不能用来赋另外一个数组的值
|
||
*/
|
||
|
||
int main()
|
||
{
|
||
int minnum,maxnum;
|
||
printf("请输入一个数(即为最小和最大的区间):");
|
||
scanf(" %d %d", &minnum, &maxnum);
|
||
|
||
int isprime[maxnum];
|
||
int i, x;
|
||
|
||
if (maxnum<=0)
|
||
{
|
||
printf("输入错误!");
|
||
return 0;
|
||
}
|
||
|
||
for (i = 0; i < maxnum; i++)// 令isprime[i]=1,采用循环赋值,默认所有的数都是素数,标记为1
|
||
{
|
||
isprime[i] = 1;
|
||
}
|
||
|
||
for (x = 2; x < maxnum; x++)
|
||
{
|
||
if (isprime[x]==1) // isprime[x]判断是否为素数
|
||
{
|
||
/* x的倍数不是素数 */
|
||
for (i = 2; i*x < maxnum; i++)
|
||
{
|
||
isprime[i*x] = 0;
|
||
}
|
||
}
|
||
}
|
||
|
||
for (x = 2; x < minnum;x++) // 将比minnum小的数标记为非素数,即不打印
|
||
{
|
||
isprime[x] = 0;
|
||
}
|
||
|
||
for (x = 2; x < maxnum; x++)// 打印素数
|
||
{
|
||
if (isprime[x] == 1)
|
||
{
|
||
printf("%d是素数\n", x);
|
||
}
|
||
}
|
||
|
||
return 0;
|
||
} |