C 打印最大为n的素数
我编写了一些代码,要求用户输入n,然后将素数打印到n。但是,当我使用它时,即使用10,它只打印非素数C 打印最大为n的素数,c,numbers,C,Numbers,我编写了一些代码,要求用户输入n,然后将素数打印到n。但是,当我使用它时,即使用10,它只打印非素数 /* Asks for the amount of prime numbers you would like to print, then prints them */ #include <stdio.h> int main(void) { int n, i, j, check; printf("How many prime numbers would you
/* Asks for the amount of prime numbers you would like to print, then prints them */
#include <stdio.h>
int main(void)
{
int n, i, j, check;
printf("How many prime numbers would you like to print? ");
scanf("%d", &n);
for (i = 2; i <= n; i++) {
check = 0;
for (j = 2; j < i ; j++) {
if (i % j == 0) {
check = 1;
if (check == 1) {
printf("%d\n", i);
}
}
}
}
return 0;
}
How many prime numbers would you like to print? 10
4
6
6
8
8
9
10
10
/*询问要打印的素数数量,然后打印它们*/
#包括
内部主(空)
{
int n,i,j,检查;
printf(“您希望打印多少素数?”);
scanf(“%d”和“&n”);
对于(i=2;i这是应该的:
for (i = 2; i <= n; i++)
{
check = 0;
for (j = 2; j < i ; j++)
{
if (i % j == 0)
{
check = 1;
break;
}
}
if (check == 0)
{
printf("%d\n", i);
}
}
for(i=2;i应该是这样的:
for (i = 2; i <= n; i++)
{
check = 0;
for (j = 2; j < i ; j++)
{
if (i % j == 0)
{
check = 1;
break;
}
}
if (check == 0)
{
printf("%d\n", i);
}
}
对于(i=2;i,正如天气风向标所说,如果i
可被j
整除,则mod运算符%
返回0,如果这是真的,则该数字是而不是素数。您的条件语句是向后的
#include <stdio.h>
int main(void)
{
int n, i, j, check;
printf("How many prime numbers would you like to print? ");
scanf("%d", &n);
for (i = 2; i <= n; i++)
{
check = 0;
for (j = 2; j < i ; j++)
{
if (i % j == 0)
{
check = 1;
break;
}
}
if (check == 0)
{
printf("%d\n", i);
}
}
return 0;
}
How many prime numbers would you like to print? 10
2
3
5
7
#包括
内部主(空)
{
int n,i,j,检查;
printf(“您希望打印多少素数?”);
scanf(“%d”和“&n”);
对于(i=2;i,正如天气风向标所说,如果i
可被j
整除,则mod运算符%
返回0,如果这是真的,则该数字是而不是素数。您的条件语句是向后的
#include <stdio.h>
int main(void)
{
int n, i, j, check;
printf("How many prime numbers would you like to print? ");
scanf("%d", &n);
for (i = 2; i <= n; i++)
{
check = 0;
for (j = 2; j < i ; j++)
{
if (i % j == 0)
{
check = 1;
break;
}
}
if (check == 0)
{
printf("%d\n", i);
}
}
return 0;
}
How many prime numbers would you like to print? 10
2
3
5
7
#包括
内部主(空)
{
int n,i,j,检查;
printf(“您希望打印多少素数?”);
scanf(“%d”和“&n”);
对于(i=2;i几个问题
首先,当您设置check=1
时,这意味着i
等分,因此n
不是素数,因此您不应该打印它。您应该在check==0
时打印数字
其次,每次都要通过内部循环进行打印。应该在循环结束时测试check
,以确保没有一个数字将其除以
作为一种改进,一旦找到一个等分的数字,就不需要继续检查。因此,只要设置check=1
,就可以打破内部循环
#include <stdio.h>
int main(void)
{
int n, i, j, check;
printf("How many prime numbers would you like to print? ");
scanf("%d", &n);
for (i = 2; i <= n; i++) {
check = 0;
for (j = 2; j < i ; j++) {
if (i % j == 0) {
check = 1;
break;
}
}
if (check == 0) {
printf("%d\n", i);
}
}
return 0;
}
#包括
内部主(空)
{
int n,i,j,检查;
printf(“您希望打印多少素数?”);
scanf(“%d”和“&n”);
对于(i=2;i几个问题
首先,当您设置check=1
时,这意味着i
等分,因此n
不是素数,因此您不应该打印它。您应该在check==0
时打印数字
其次,每次都要通过内部循环进行打印。应该在循环结束时测试check
,以确保没有一个数字将其除以
作为一种改进,一旦找到一个等分的数字,就不需要继续检查。因此,只要设置check=1
,就可以打破内部循环
#include <stdio.h>
int main(void)
{
int n, i, j, check;
printf("How many prime numbers would you like to print? ");
scanf("%d", &n);
for (i = 2; i <= n; i++) {
check = 0;
for (j = 2; j < i ; j++) {
if (i % j == 0) {
check = 1;
break;
}
}
if (check == 0) {
printf("%d\n", i);
}
}
return 0;
}
#包括
内部主(空)
{
int n,i,j,检查;
printf(“您希望打印多少素数?”);
scanf(“%d”和“&n”);
对于(i=2;i尝试查看此代码
#include <stdio.h>
int IsPrime(int num)
{
int i = 2;
for (i = 2; i < num; i++) if (num % i == 0) return 0;
return 1;
}
int main(void)
{
int n, i;
char *nStr = (char*)malloc(10);
printf("How many prime numbers would you like to print? ");
fgets(nStr, 9, stdin);
n = atoi(nStr);
for (i = 1; i <= n; i++) if (IsPrime(i)) printf("%d\n", i);
getchar();
return 0;
}
#包括
intisprime(intnum)
{
int i=2;
对于(i=2;i 对于(i=1;i尝试查看此代码
#include <stdio.h>
int IsPrime(int num)
{
int i = 2;
for (i = 2; i < num; i++) if (num % i == 0) return 0;
return 1;
}
int main(void)
{
int n, i;
char *nStr = (char*)malloc(10);
printf("How many prime numbers would you like to print? ");
fgets(nStr, 9, stdin);
n = atoi(nStr);
for (i = 1; i <= n; i++) if (IsPrime(i)) printf("%d\n", i);
getchar();
return 0;
}
#包括
intisprime(intnum)
{
int i=2;
对于(i=2;i 对于(i=1;iif(i%j==0)
意味着没有余数,也就是说,它不是素数。如果你的输出感觉被颠倒了,这就是一个强烈的提示,让我们看看你的比较。@Barmar这么多人被1
和n
除数,然后检查除数是否超过2!哦,这是一个感叹号,不是一个阶乘,尽管在这种情况下它们是一样的。这是一种如果(检查==1)
在检查=1之后放置如果(i%j==0)没有用
意味着没有余数,也就是说,它不是素数。如果你的输出感觉被颠倒了,这就是一个强烈的提示,让我们看看你的比较。@Barmar这么多人被1
和n
除数,然后检查除数是否超过2!哦,这是一个感叹号,不是一个阶乘,尽管在这种情况下它们是一样的。这是一种如果(check==1)
正好在check=1
之后,那么放入if(check==1)
是无用的。实际上,beyondsqrt(i)
实际上,beyondsqrt(i)
免费(nStr)
?是malloc
对于int
输入来说有点杀伤力吗?你可以使用一个循环(i=2;i
因为每个数字都可以被1和自身整除。free(nStr)
?对于int
输入,malloc
是不是有点过了头?你可以使用循环来(i=2;i
,因为每个数字都可以被1和自身整除。