本关任务:编写一个判断是否素数的子函数,在主函数中输入一个整数,并输出是否为素数的信息。
为了完成本关任务,你需要掌握:
基本原理:for
循环是一种常用的循环结构,它允许您指定一个初始化表达式、一个循环条件和一个更新表达式。语法格式为for(初始化表达式; 循环条件; 更新表达式)
。初始化表达式在循环开始时执行一次,用于初始化循环变量。循环条件在每次循环迭代开始时进行检查,如果为真,则执行循环体中的代码。更新表达式在每次循环体执行完后执行,用于更新循环变量。
示例代码
#include <stdio.h>
int main() {
// 打印1到10的数字
for (int i = 1; i <= 10; i++) {
printf("%d ", i);
}
printf("\n");
return 0;
}
基本原理:while
循环在循环开始时检查循环条件。只要条件为真,就会执行循环体中的代码。语法格式为while(循环条件)
。循环条件是一个表达式,它返回一个布尔值(真或假)。在循环体中,通常需要包含一些能够改变循环条件的语句,否则可能会导致无限循环。
示例代码
#include <stdio.h>
int main() {
int i = 1;
while (i <= 10) {
printf("%d ", i);
i++;
}
printf("\n");
return 0;
}
基本原理:break
语句用于立即跳出当前循环(for
、while
、do - while
)或switch
语句。当程序执行到break
语句时,循环或switch
语句会立即终止,程序控制流将跳转到循环或switch
语句后的下一条语句。
示例代码(在循环中使用 break)
#include <stdio.h>
int main() {
for (int i = 1; i <= 10; i++) {
if (i == 5) {
break;
}
printf("%d ", i);
}
printf("\n");
return 0;
}
基本原理:continue
语句用于跳过当前循环迭代的剩余部分,直接开始下一次循环迭代。当程序执行到continue
语句时,循环体中continue
语句之后的代码将不会被执行,而是直接跳转到循环的更新表达式(对于for
循环)或循环条件检查(对于while
和do - while
循环)。
示例代码(在循环中使用 continue)
#include <stdio.h>
int main() {
for (int i = 1; i <= 10; i++) {
if (i == 5) {
continue;
}
printf("%d ", i);
}
printf("\n");
return 0;
}
%
是取余运算符,也称为模运算符。它用于计算两个整数相除后的余数。例如,表达式a % b
的结果是a
除以b
后的余数。余数的取值范围是从 0 到b - 1
(假设b
是正数)。7 % 3
的结果是 1,因为 7 除以 3 商为 2,余数为 1;9 % 3
的结果是 0,因为 9 能被 3 整除,余数为 0。char
、short
、int
、long
等基本整数类型。如果操作数是浮点数,在 C 语言中是不允许直接进行%
运算的。%
左边的数)相同。例如,-7 % 3
的结果是 -1,因为 -7 除以 3 商为 -2,余数为 -1;7 % -3
的结果是 1,因为 7 除以 -3 商为 -2,余数为 1。判断整除关系:在判断一个数是否能被另一个数整除时非常有用。如前面判断素数的代码中,if (a % 2 == 0)
用于判断a
是否能被 2 整除。如果余数为 0,就表示能整除。这是一种常见的用法,通过判断余数是否为 0 可以确定两个数之间的整除特性。
循环分组:在一些需要按照一定周期或分组进行操作的程序中也经常用到。例如,要将 1 到 100 的数按照每 10 个一组进行输出,可以利用%
运算符来判断。以下是一个简单的示例代码:
#include <stdio.h>
int main() {
for (int i = 1; i <= 100; i++) {
printf("%d ", i);
if (i % 10 == 0) {
printf("\n");
}
}
return 0;
}
哈希函数和数据结构中的应用:在一些数据结构如哈希表中,%
运算符常用于计算哈希值。例如,假设有一个简单的哈希函数,用于将一个整数键值映射到一个哈希表的索引位置,哈希表的大小为m
,可以使用key % m
来计算键值key
对应的哈希表索引。这样可以将不同的键值相对均匀地分布到哈希表的各个位置,提高数据存储和查找的效率。当然,实际的哈希函数可能会更复杂,但%
运算符是其中一种简单的实现方式。
三、素数的概念 1. 定义
2. 最小的素数
3. 素数的分布规律
n
趋向于无穷大时,不超过n
的素数的个数与n/ln(n)
(ln(n)
表示n
的自然对数)近似相等。不过这只是一种渐近估计,实际的素数分布仍然存在许多复杂的情况。4. 素数的应用
根据提示在右侧编辑器Begin--End之间的区域内补充必要的代码。
平台会对你编写的代码进行测试:
测试输入:
123
预期输出:
123不是一个素数
测试输入:
311
预期输出:
311是一个素数
开始你的任务吧,祝你成功!
#include<stdio.h>
int main()
{
int isPrime(int a);
int a;
//请在此添加代码
/*********Begin*********/
scanf("%d",&a);
if(isPrime(a)==0)
printf("%d不是一个素数",a);
else printf("%d是一个素数",a);
return 0;
}
/********* End *********/
int isPrime(int a)
{
if(a<=1) return 0;
for(int b=2;b<a;b++)
//请在此添加代码
/*********Begin*********/
{
if(a%b==0) return 0;
}
return 1;
/********* End *********/
}