You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言质数判断代码中for循环及p变量逻辑的相关疑问

C语言质数检测代码逻辑详解

首先附上完整可运行代码:

#include <stdio.h>
int main() {
    int n,f;
    printf("");
    scanf("%d",&n);
    int p=0;
    for (f=1;f<=n;f++)
    {
        if (n%f==0)
        {
            p=p+1;
        }
    }
    if (p==2)
    {
        printf("prime");
    }
    else
    {
        printf("not prime");
    }
    return 0;
}

逻辑设计依据

所有变量和判断的设计都基于质数的基础定义:大于1的自然数中,只能被1和它本身整除的数为质数,也就是说质数的正因数数量恰好为2个。

各部分语句含义

变量p相关操作

  • int p=0:p是统计输入数字n的正因数个数的计数器,初始值设为0,代表统计前的初始计数为0
  • p=p+1:每次找到一个能整除n的正整数(即n的因数),就将计数器加1,累计因数总数量
  • p==2:判断统计得到的因数总数是否恰好为2,符合质数的定义,满足条件则说明n是质数

for循环的作用

这段循环的核心作用是遍历1到n的所有正整数,逐个判断是否为n的因数,同时统计因数的总数量:

  • 循环初始化f=1:从最小的正整数1开始检查
  • 循环条件f<=n:遍历范围覆盖到n本身为止
  • 循环内的if(n%f==0)判断:%是C语言的取余运算符,若n除以f的余数为0,说明f是n的正因数,触发计数器加1操作

运行流程示例

我们用输入值n=7(质数)为例走一遍流程:

  1. 循环变量f从1依次递增到7
  2. f=1时,7%1=0,p变为1
  3. f=2到f=6时,7取余结果都不为0,p无变化
  4. f=7时,7%7=0,p变为2
  5. 循环结束,判断p==2成立,输出prime

再用输入值n=4(非质数)为例:

  1. 循环变量f从1依次递增到4
  2. f=1时,4%1=0,p变为1
  3. f=2时,4%2=0,p变为2
  4. f=3时,4%3=1,p无变化
  5. f=4时,4%4=0,p变为3
  6. 循环结束,判断p==2不成立,输出not prime

补充说明

这是质数判断的最基础实现,效率较低,实际使用时不需要遍历到n,只需要遍历到√n即可完成判断,因为因数是成对出现的。

内容的提问来源于stack exchange,提问作者Oss Jr.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 08:51:00