【问题标题】:Code is not working after scanning the value of n,I have tried printing hi before and after the scanf statement the one after scanf is not working扫描 n 的值后代码不工作,我尝试在 scanf 语句之前和之后打印 hi scanf 之后的那个不工作
【发布时间】:2023-01-17 00:44:13
【问题描述】:
[#include <math.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <assert.h>

int checkPrime(int n)
{
    
    int c=0;
    for(int i=2;i<=sqrt(n);i++)
        if(n%i==0)
            c++;
    if(c)`
        return 0;
    return 1;`
}

int main(){
    
    int t; 
    scanf("%d",&t);
    for(int a0 = 0; a0 < t; a0++)
    {
        int n,j; 
        scanf("%d",&n);//Code isnt working beyond this statement
        for(int i=1;i<=n;)
        {
            for(j=2;;j++)
            {
                if(checkPrime(j))
                i++;
            }`
        }
        printf("%d\n",j);
    }
    return 0;

}

我正在尝试打印第 N 个素数,但由于某种原因,此代码无法超出 scanf 语句的工作范围我尝试在扫描 n 的值后放置 printf 语句,但由于某种原因无法正常工作`

【问题讨论】:

  • 退出循环for(j=2;;j++)的条件是什么?
  • 得到错误!谢谢你的帮助
  • 为什么你觉得有必要重新计算平方根每次通过循环?使用一些常识。如果这是一项作业,您几乎肯定会因此而失分。
  • 那么,当我检查每个 n 是否为素数时,如何避免每次都使用 sqrt

标签: c scanf


【解决方案1】:
#include <stdio.h>
#include <math.h>

int checkPrime(int n){
int c = 0;
for (int i=2;i<=sqrt(n);i++)
    if (n % i == 0)
    {
        c =1 ;
        break;
    }
if (n == 1)
    c = 1;
return c;
}

int main(){
int n;
printf("Enter a number: ");
scanf("%d",&n);
if (checkPrime(n) == 0)
    printf("prime number");
else
     printf("not prime");
return 0;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-30
    • 2021-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-07
    相关资源
    最近更新 更多