关于调用函数以及打印素数的问题

题目描述:写出一个判断素数的函数Isprime(),主函数实现输出100-1000的所有素数,每行输出10个

#include<stdio.h>
#include<math.h>
int Isprime(int n)
{
    int i,k=1;
    for(i=1;i<=sqrt(n);i++)
{
    if(n%i==0) {
    k=0;
    break; }
    
}
return k;
}
void main()
{
    int n,count=0;
    for(n=100;n<=1000;n++)
    {
    if(Isprime(n)==1)
    {
    printf("%d\t",n);
    count++;
}
if(count%10==0)
printf("\n");
}
return;
}


问题描述:以上是我的代码,但是输出结果为

img


输出打印不出来,但是程序可以编译运行,我想知道问题出在哪里。

第6行i=1, 改为i=2,因为素数是除了1和它本身没有其他因素,所以i要从2开始;

然后把打印换行放到打印素数那个if里面,即当素数每10个打印一行换行。

修改如下:

参考链接:


质数_百度百科 质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。 https://baike.baidu.com/item/%E8%B4%A8%E6%95%B0/263515


#include<stdio.h>
#include<math.h>
int Isprime(int n) {
    int i,k=1;
    
    // 如果此函数需要用于判断其他范围的数,如小于2的数是否为素数,可以加个判断 
    // 当小于2的数都不是素数, 返回0
    // https://www.zhihu.com/question/279186260 
//    if(n<2) {
//        return 0;
//    }
    
    // https://baike.baidu.com/item/%E8%B4%A8%E6%95%B0/263515 
    for(i=2; i<=sqrt(n); i++) {
        if(n%i==0) {
            k=0;
            break;
        }

    }
    return k;
}
int  main() {
    int n,count=0;
    for(n=100; n<=1000; n++) {
        if(Isprime(n)==1) {
            printf("%d\t",n);
            count++;
            if(count%10==0)
                printf("\n");
        }
        
    }
    return 0;
}






img