素数的判断

问题描述 投票:0回答:1

#任务:输入一个数,判断是否为素数。 1.问题:如何优化我的代码,当我运行此代码时,我发现某些素数得到的答案是“否”。

#include <stdio.h>
int main(){
    int a;
    int i;
    scanf("%d",&a);
    for(int i = 2;i<=a;i++) {
        if(a%i == 0) {
            printf("No");
            break;
        }
    }
    if(i == a) {
        printf("Yes");
    } else {
        printf("No");
    }

    return 0;
}

如何优化我的代码,当我运行此代码时,我发现某些素数得到的答案是“否”。

c loops primes
1个回答
0
投票

对于素数,最好使用无符号整数类型而不是有符号整数类型,因为素数不能为负数。

每个数字都可以被自身整除。所以这个 for 循环

for(int i = 2;i<=a;i++) {
    if(a%i == 0) {
        printf("No");
        break;
    }
} 

i

 等于 
a
 时,
将始终输出“No”。

程序可以通过以下方式查看示例

#include <stdio.h>

int main( void )
{
    while (1)
    {
        printf( "Enter a number (0 - exit): " );

        unsigned int n;
        if (scanf( "%u", &n ) != 1 || n == 0) break;

        int prime = n % 2 == 0 ? n == 2 : n != 1;

        for (unsigned int i = 3; prime && i <= n / i; i += 2)
        {
            prime = n % i != 0;
        }

        printf( "%u is %sprime\n", n, prime ? "" : "not " );
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.