首页 > 解决方案 > 检测素数的 C 程序

问题描述

所以我正在尝试根据以下规范编写代码 - 输入一个最多包含 3 个数字的十进制数,并确定输入的数字是否是质数。如果输入的数字超过 3 个,程序应该输出消息超过 3 个字符并退出。如果输入了非数字字符,程序应输出消息 Invalid input and exit。如果输入有效,您的程序应显示输入的消息编号是质数或输入的消息编号不是质数。

我真的不确定不仅如何使用循环计算素数,还不确定在哪里将其输入到我的程序中。我知道这是一个非常基本的问题。

#include <stdio.h>
#include <string.h>
#define FALSE 0
#define TRUE 1
/* check string only contains decimal digits */
int numeric(char* string)
{
    int i, valid;
    valid = TRUE;
    for (i = 0; i < strlen(string); i++)
    {
        if (string[i] < '0' || string[i] > '9')
            valid = FALSE;
    }
    return valid;
}
/* main function */
int main()
{
    char number[4];
    int count, toolong = FALSE;
    printf("Enter number: ");
    fgets(number, 4, stdin);
    
    if (number[strlen(number) - 1] == '\n')
        number[strlen(number) - 1] = '\0';

    else
        
        while (getchar() != '\n')
            toolong = TRUE;
    if (toolong)
    {
        printf("More than 3 characters");
        return 1;
    }
    
    if (!numeric(number))
    {
        printf("'%s' is an invalid number\n",
            number);
    }

        printf("'%s' is a valid number\n",
            number);
    
    
    return 0;
}

谢谢 :)

标签: c

解决方案


我真的不确定不仅仅是如何使用循环计算素数

最简单的方法是使用试除法。你检查你检查的数字是否能被 2 整除。然后你检查它是否能被 3 整除。一直不停地直到你达到你正在检查的数字的平方根。请参阅此处了解如何检查一个数字是否可被另一个数字整除。

Wikipedia 指出,这不是一种非常有效的方法,但对于您要检查的少量数字,这并不重要。

还有在哪里输入到我的程序中

在确定一个数字是有效数字并将字符串解析为 int 后,您应该检查该数字是否为素数。


推荐阅读