#任务:输入一个数,判断是否为素数。 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;
}
如何优化我的代码,当我运行此代码时,我发现某些素数得到的答案是“否”。
对于素数,最好使用无符号整数类型而不是有符号整数类型,因为素数不能为负数。
每个数字都可以被自身整除。所以这个 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 " );
}
}