c语言-C语言程序求帮忙解惑,谢谢了

问题描述

C语言程序求帮忙解惑,谢谢了

求1000以内的素数
#include
void main()
{

int m,k,n=0;
for(m=2;m<1000;m++)
{
    for(k=2;k<m;k++)
    {
        if(m%k==0)
        {
            break;
        }
    }
    if(k>=m)
    {
        printf("%d	",m);
        if(++n%9==0)
            printf("
");
    }
}

}

为什么一定要在k>=m是才输出呢

解决方案

急求C语言程序!!!

解决方案二:

#include
int main()
{
int i,j;
for(i=2;i
{
for(j=2;j*j
if(i%j==0)
break;
if(j*j>i){
printf("%d ",i);

    }
}

}
这个也是那个问题,可是第二层循环是为什么要用j*j和i比较呢

解决方案三:

第一个问题:不判断k>=m就退出怎么保证k就不能整除m...= =
第二个问题:简单的数学知识,一个整数m如果在2到[aqrt(m)]区间内没有整数可以整除它,那么在[aqrt(m)]到m区间内也不会有整数可以整除,
因为整除关系是一一对应的

解决方案四:

for(k=2;k
{
if(m%k==0)
{
break;
}
}
if(k>=m)

这里用 k>=m 说明上面的循环没有break,如果break的话,说明m就不是素数了

解决方案五:

k >= m最主要的是判断k == m,for(k=2;k<m;k++) 这个循环结束后,如果是素数,那么k应该是等于m的。

解决方案六:

k>=m说明当前数m对于2~m-1都不可被整除,是素数

解决方案七:

for(m=2;m<1000;m++)
{
   //判断2~m-1之间是否存在m的因子,有的话就break
    for(k=2;k<m;k++)
    {
        if(m%k==0)
        {
            break;
        }
    }
        //如果在上一个for循环中,是break出来的,则k一定小于m;如果正常循环结束,则一定有k>=m,也就是说在2~m-1之间不存在m的因子(否则的就会break出来,使得k<m)
    if(k>=m)
    {
        printf("%d	",m);
        if(++n%9==0)
            printf("
");
    }
}

解决方案八:

,因为要输出的是素数,素数的定义就是除啦1和它本身外不能被任何数整除。而这里的k>=m表示m未被整除,在上面已经有k++来增加k的值,所以才如此判断

解决方案九:

你求的是素数,素数的定义就是只能被1和它本身整除,所以肯定要(k>=m),第二种算法主要是用根号,如果在根号i都只有1能整除,之后的都可以不要判断啦,相对而言,第二种方法运行速度比第一种快,工作量小。

解决方案十:

被除数是m ,除数是k ,当除数大于被除数了,再运算也就没有意义了,所以程序在对看进行判断到等于m时就是一个分界线了,所以选择在除数大于等于被除数时,来结束判断,从而输出最终的结果。。。

时间: 2024-08-22 14:15:01

c语言-C语言程序求帮忙解惑,谢谢了的相关文章

c语言-汉诺塔C语言编程问题,求帮忙

问题描述 汉诺塔C语言编程问题,求帮忙 Description 大家都听说过汉诺塔吧?有n个圆盘由小到大排列,套在a柱上,每次只能移动一个圆盘,而且只能大的在下,小的在上,让你把a柱上的圆盘移到b柱,给你一个多余的c柱,问你最少移动多少次才能完成任务. Input 输入有多组数据,每组包括一个整数n(n<=10000000),表示初始状态下有n个圆盘,当输入的n为0时,程序结束,n为负的情况不作处理. Output 对每个输入,对应一行输出,每行输出包括一个整数,即移动的最小次数,因为数目非常大

c语言-C语言读取文件问题求帮忙

问题描述 C语言读取文件问题求帮忙 用命令行输入文件名称如input.txt 内容如下: 1 00j0o0d0c 0oe3c01l5 l00d0193j 00000ec03 0l0000001 0j0000490 30091c0j0 00543dl09 9d1jl50c4 2 -- -- 多组数据 每次将读到的数据存到一个二维数组a[i][j]中运算后输出到output.txt文件中 依次读取并计算 输出 解决方案 直接用fprintf和fscanf来操作就行了只要保证读和写的格式是一样的,就能

c语言-C语言数组程序求帮助,谢谢

问题描述 C语言数组程序求帮助,谢谢 #include int scor[10][3]; void input() { for(int i=0;i<10;i++) { printf("chinese maths engishn"); scanf("%d %d %d",&scor[i][0],&scor[i][1],&scor[i][2]); } } void main() { input(); int sum[3]; for(int i

c语言打印素数程序求大神

问题描述 c语言打印素数程序求大神 #include int main() { int a[101],i,j; for(i=0;i<101;i++) a[i]=i; for(i=0;i<101;i++) { for(j=0;j<i-1;j++) { if(a[i]%j!=0)break; } a[i]=0; } for(i=0;i<101;i++) if(a[i]=0) printf("%d is a sushu.",i); return 0; } 初学者啊啊啊

c-vs2013 编C程序 ,求帮忙 ,谢谢

问题描述 vs2013 编C程序 ,求帮忙 ,谢谢 错误 1 error C1083: 无法打开包括文件: "graphics.h": No such file or directory 解决方案 graphics.h 是 Turbo C 编程环境下图形图像编程的头文件,但 VS2013 中不能再使用它. 解决方案二: VC++是没有graphics.h这个头文件的,VC图形编程一般靠GDI/OPENGL,#include是Turbo C下的头文件(Dos环境),应该到TC下编译才不会

求帮忙啊 谢谢了&amp;quot;

问题描述 百度全是copy,求帮忙啊 谢谢了 22.题目:有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位. 解决方案 给你讲思路, 写个for循环一直循环到n,然后定义一个集合,赋值0-n,用%3余1和2跳过,整除就移除到,然后用递归循环集合,直到集合的长度为1结束循环,得到的这个值. 解决方案二: 猴子选大王--CSharp数组 解决方案三: 约瑟夫环问题,去查吧

android怎么将jsonarray清空,在线等。求帮忙。谢谢了。

问题描述 android怎么将jsonarray清空,在线等.求帮忙.谢谢了. 因为需要重复使用jsonarray,所以我想在使用jsonarray之前将其清空,该怎么做. 但是每次使用后,里面的数据还在. JSONObject jsonObject = new JSONObject(strResult); JSONArray jsonArray = jsonObject.getJSONArray("books"); if (jsonArray.length() != 0){ 判断长度

刚学c++ 有道题目求大神解答,求帮忙,谢谢

问题描述 读程序,要求:分析描述程序功能,写出输出结果.(子类型问题)#include<iostream.h>ClassA{public:a(){a=0;}A(intj){a=j}Voidprint(){cout<a<endl;}Intgeta(){returna;}Private:inta;}ClassB:;publicA{public:B(){b=0;}B(intj,intk):A(j),b(k){}Voidprint(){A::print();cout<a<end

急!!JNI问题,求帮忙!谢谢给位了

问题描述 要调用c++里面的函数,手上有dll和头文件,但c++函数返回值和参数类型都是类.voidStartViMPlayerContoller(ViMPlayerController*,HWND);ViMResCtrl_Play(TCHAR*,TCHAR*,intVedio3DMode=0,intDeclipse=0);其中VIMRes和VIMPlayerController都是类的名称.我需要在JAVA里面怎么写呢,JNI实现又该怎么实现.求大神帮忙! 解决方案 本帖最后由 u014729