精华内容
下载资源
问答
  • [原创]对一个求素数c语言程序的逆向分析2013-11-11 00:143963[原创]对一个求素数c语言程序的逆向分析2013-11-11 00:143963(release版本)sub_401020procnearmovedi,65h;初值loc_40102A:moveax,edi;eax=...

    [原创]对一个求素数的c语言程序的逆向分析

    2013-11-11 00:14

    3963

    [原创]对一个求素数的c语言程序的逆向分析

    2013-11-11 00:14

    3963

    (release版本)

    sub_401020       proc near

    mov     edi, 65h             ; 初值

    loc_40102A:

    mov     eax, edi             ; eax = edi = 65h

    mov     ecx, 2               ; ecx = 2

    cdq

    sub     eax, edx

    mov     esi, eax              ; esi = eax

    sar     esi, 1                ; esi = esi / 2

    cmp     esi, ecx

    jl      short loc_40104A     ; esi 

    ; esi >= ecx ->

    ; ecx <= esi

    ; 不满足条件则跳出内层循环

    loc_40103C:

    mov     eax, edi

    cdq

    idiv    ecx

    test    edx, edx             ;内层循环的内容,如果eax % ecx == 0则跳

    jz      short loc_40104A      ; esi在上面/2了,再+1,可以想到,这一段语句用到了被外提的代码

    inc     ecx

    cmp     ecx, esi

    jle     short loc_40103C     ; 满足条件则跳回,被优化的for结构,do_while,如果不满足,向下执行就跳出循环

    loc_40104A:

    inc     esi                   ; esi在上面/2了,再+1,可以想到,这一段语句用到了被外提的代码

    cmp     ecx, esi              ; ecx在程序里都为递增变量

    jl      short loc_40105E     ; 小于则跳->大于等于则执行

    push    edi

    push    offset aD             ; "%d "

    call    printf

    add     esp, 8

    inc     ebx                 ; ebx++

    loc_40105E:

    mov     eax, ebx             ; eax = ebx

    mov     ecx, 0Ah            ; ecx = 10

    cdq

    idiv    ecx

    test    edx, edx              ; eax % ecx ==0 则执行语句,否则跳转

    jnz     short loc_401079     ; 如果输出了10个,则换行

    push    offset asc_408038     ; "\n"

    call    printf

    add     esp, 4

    loc_401027:                    ;

    add     edi, 2          ;edi+=2(while)

    cmp     edi, 0C8h        ;临界值0C8h

    jle      short loc_401007      ;edi<=0C8h则跳(向上)

    push    offset asc_408038     ; "\n"

    call    printf

    add     esp, 4

    pop     edi

    pop     esi

    pop     ebx

    retn

    sub_401020      endp

    对于这种双重for循环结构,外层循环被优化成do_while循环,最后一个jle为循环条件,根据《C++反汇编与逆向分析技术揭秘》的总结,跳转条件不取反,esi/2为代码外提的语句,首先与2比较,esi/2=ecx时执行循环体内容,也就是不跳,但是ecx才是循环变量,所以应该在取反一次,变成ecx<=esi/2执行循环,这样反向了2次,内层循环的运算结束后为判断跳转语句,同样是do_while结构。

    C语言源码:

    //1、求出200~1000之间所有的素数,要求:

    //调用函数判断某数是不是素数;

    //输出结果,每行输出10个素数。

    #include

    #include

    void  PrimeFind();//声明求素数的函数

    int main()

    {

    PrimeFind();//调用

    system("pause");

    return 0;

    }

    void PrimeFind()//定义

    {

    int min=101,max=200;//定义求素数的范围

    int x,temp,count=0;//101-200内的遍历和2-x内的遍历

    for(x=min;x<=max;x+=2)//x在101-200内的奇数递增

    {

    for(temp=2;temp<=x/2;temp++)//temp在x范围内递增

    {

    if(x%temp==0)

    {

    break;//x能被temp整除则跳出(此时证明x不是素数,temp<=x/2+1)

    }

    }

    if(temp>=x/2+1)//for正常跳出,则x是素数【注意】是x/2,不是x

    {

    printf("%d ",x);

    count++;

    }

    if(count%10==0)

    {

    printf("\n");

    }

    }

    printf("\n");

    }

    上传的附件:

    示例练习.zip

    (145.09kb,10次下载)

    展开全文
  • #include int isPrime(int i);... printf/判断是不是素数 #include int prime(int a);//函数声明 int main() { int n,i; scanf("%d",&n); if(prime(n)==1) //return返回值1 printf("prime"); else printf(...

    #include int isPrime(int i); main() { int number ; printf/判断是不是素数 #include int prime(int a);//函数声明 int main() { int n,i; scanf("%d",&n); if(prime(n)==1) //return返回值1 printf("prime"); else printf("not prime") ; } int prime(int a) { int i; for(i=2;i确定性算法 2>随机性算法

    CSS布局HTML小编今天和大家分享C语言中 判断素数的 代码。。。。。

    C语言编程判断输入的正整数是否为素数。

    d32181b5bd5937058f8f31353580f234.png

    输入:共两行,第一行一个整数,为输入正整数的个数n(1<=n<=1000);第二将:for(k=2;k

    如何用c语言编程判断一个数是不是素数?

    int型的一个数怎么编写程序判断是不是素数?负数、0、 1等特殊情况都要方法一: #include<stdio.h> int main(){ int i,j; printf("请输入一个正整数。\n"); scanf("%d",&i); if(i<2) printf("小于2,请重新输入。\n"); elseif(i%2==0) printf("%d不是一个素数。

    C语言编写一个程序判断一个数是否为素数?急CSS布局HTML小编今天和大家分享

    目的:判断一个数是否为素数# include int main(void) { int m; int i; scanf("%d",&m); for(i = 2; i < m; i++) //2到(m-1)的数去除m { if(m% i == 0) // 判断能否整除 break; } if (i == m) printf("YES。\n"); else printf("No。

    c语言判断是不是素数的程序

    #include main() {int m,i,k; scanf("%d",&m); k=m; for(i=2;       } if(i==val) printf("YES。\n"); else printf("No。\n");}注:for循环的功能:①若能整除,通过break跳出函数②若一直到val-1都不能整除,此时i再自增1到val。

    用C语言编程:编写一函数判别某一数是否为素数,若是#include void main() { int a,c; int isSus(int n);/*函数声明*/ printf("请输入一整数a:\n"); scanf("%d",&a); c=isSus(a);/*函数调用*/ printf("%d",c); printf("\n"); } int isSus(int n)/*函数定义*/ { int j,t; for(j=2;j 如果include出现

    用C语言循环结构编写:输入一个数,判断该数是否为#include int main() { int n; int i; scanf("%d",&n); if(n

    c语言编程:输入一个正整数n,判断它是否为素数

    c语言编程:输入一个正整数n,判断它是否为素数 谁帮帮忙

    #include #include using namespace std; int main() { int a,b,i,flag=true; cin>>a; b=sqrt(a); for(i=2;i

    展开全文
  • 求素数C语言版本 求素数C语言版本 求素数C语言版本
  • 判断素数c语言程序_C素数程序

    千次阅读 2020-09-09 10:10:44
    判断素数c语言程序Here you will get program for prime number in C. 在这里,您将获得C中素数的程序。 A number that is only divisible by 1 or itself is called prime number. 仅可被1整除的数字或本身...

    判断素数的c语言程序

    Here you will get program for prime number in C.

    在这里,您将获得C中素数的程序。

    A number that is only divisible by 1 or itself is called prime number.

    仅可被1整除的数字或本身称为素数。

    For example, 17 is prime, 6 is not prime, etc.

    例如,17是素数,6不是素数,依此类推。

    C素数程序 (Program for Prime Number in C)

    #include<stdio.h>
     
    int main()
    {
    	int n,i,flag=1;
    	printf("Enter any number:");
    	scanf("%d",&n);
    	
    	for(i=2;i<n/2;++i)
    		if(n%i==0)
    		{
    			flag=0;
    			break;
    		}
    	
    	if(flag==1)
    		printf("\nThe given number is prime");
    	else
    		printf("\nThe given number is not prime");
     
    	return 0;
    }

    Output

    输出量

    Enter any number:15

    输入任何数字:15

    The given number is not prime

    给定的数字不是素数

    翻译自: https://www.thecrazyprogrammer.com/2012/05/c-program-to-check-whether-number-is.html

    判断素数的c语言程序

    展开全文
  • C语言程序设计报告 C 实验名称 计算并输出1000以内最大的10个素数以及它们的和.docC语言程序设计报告C实验名称实验目的….else”, “if”,”else”,语句,及”for”,”do…while”.”while”循环的使用,及函数的...

    C语言程序设计报告 C 实验名称 计算并输出1000以内最大的10个素数以及它们的和.doc

    C语言程序设计报告

    C

    实验名称

    实验目的

    ….else”, “if”,”else”,语句,及”for”,”do…while”.”while”循环的使用,及函数的调用,定义。以及循环的嵌套使用。

    实验内容

    源程序

    #include"stdio.h"

    #include"math.h"

    int sushu(int a)

    {

    int i,k;

    k=sqrt(a);

    for(i=2;i<=k;i++)

    if(a%i==0)

    return 0;

    return 1;

    }

    main()

    {

    int a,n,sum;sum=0;

    printf("\ninput a number:");

    scanf("%d",&a);

    if(a==2)

    printf("%d=%d",a,a);

    if(a>2)

    {

    while(sushu(a)==0&&a>2)

    a--;

    printf("%d",a) ;

    sum=sum+a;

    a=a-2;

    for(n=1;a>2&&n<=9;)

    {

    if(sushu(a)==1)

    {sum=sum+a;

    printf("+%d",a);

    n++;

    };

    a=a-2;

    }

    if(n<=9)

    {

    sum=sum+2;

    printf("+2=%d",sum);

    }

    if(n>=10)

    printf("=%d",sum);

    };

    }

    测试数据

    1000

    100

    10

    运行结果

    出现问题及解决方法

    实验的过程中开始的程序无法运行,原因是某些变量名在使用前没有定义,循环在嵌套使用时出现交叉错误。部分函数的参数定义错误。改正的办法是在运行的过程中定义变量,改正循环的的嵌套使用。

    实验心得

    1.在这次实验编程中对函数的调用,循环的使用,变量名的定义等的理解更加深刻。 2。最为主要的是这次实验的成功在很大程度上得力于实验老师的指导和帮助。 3。 通过这次实验我深刻的体会到了编程的思想:严谨。在以后的实验中一定多像实验老师多请教。

    4。由于我对C语言程序设计掌握的不够清楚,所以在本次的程序设计中,源程序的设计有些参考其他同学,请实验老师酌情给分。

    2

    展开全文
  • //列举1到100之间的所有素数,并每个素数...c语言程序:#includeint main(){int i,j,r;int x;x=2;r=1;printf("%4d",x);int a[30];a[r]=x;for(i=2;i<100;i++){for(j=2;j{if(i%j==0) break;else if((i%j!=0)&...
  • 满意答案 hhy_421 2013.11.02 采纳率:40% 等级:6 已帮助:509人 #include #include #include #include void fun(int m,int *k,int... } 提示叫来你输入源数字的时候,你输入1000就可以看见这中间的素数了 00分享举报
  • 快速求素数 C语言

    千次阅读 2011-07-21 11:31:08
    【问题描述】: 试编写一个程序,找出2->N之间的所有质数。希望用尽可能快的方法实现。【问题分析】: 这个问题可以有两种解法:一种是用“筛子法”,另一种是从2->N检查,找出质数。 先来简单介绍一下“筛法”,...
  • c语言程序设计练习之2012 素数判定。对于表达式n^2+n+41,当n在(x,y)范围内取整数值时(包括x,y)(-39<=x<><>input输入数据有多组,每组占一行,由两个整数x,y组成,当x=0,y=0时,表示输入结束,该行...
  • 判断质数函数//判断是否是素数bool_isPrime(int num){int i;int temp = sqrt(num);for(i=2;iif(num % i==0)return 0;return 1;}回数主要逻辑:for(i=1;i<10;i++)for(j=0;j<10;j++)for(k=0;k<10;k++){num ...
  • C语言可逆素数教程引导语:可逆素数是一个素数将其各位数字的顺序倒过来构成的反序数也是素数。以下是百分网小编分享给大家的C语言可逆素数教程,欢迎参考学习!四位的可逆素数。可逆素数指:一个素数将其各位数字...
  • 一、素数筛的定义给定一个整数n,出[1,n]之间的所有质数(素数),这样的问题为素数筛(素数的筛选问题)。二、埃氏筛法(Eratosthenes筛法)埃氏筛法又叫做Eratosthenes筛法,一般叫做埃氏筛。埃氏筛的思想是:\(\for...
  • 程序功能:输入一个整数,要求打印出这个整数以内的所有质数程序示例:#include #include #include bool IsPrime(int x){bool bResult = false;int i, k;k = (int)sqrt(x);for (i = 2; i <= k; i++){if (x % i ...
  • 话题:c语言 1到n的素数和回答:#includemain(){ int i,j,n,sum=1;printf("please input a number");scanf("%d",amp;n);for(i=2;ilt;=n;i++){for(j=2;jlt;i;j++){if (i%j==0)break;}sum=sum+i;}pr...
  • c语言求素数的小程序

    2011-05-14 01:21:07
    c语言循环求素数,c语言经典面试题,面试必备宝典
  • 如何写一个求质数C语言程序大神帮帮忙,带注释 //,谢谢了 新人求助。
  • c语言程序(一)——求素数

    千次阅读 2019-07-21 22:33:46
    判断一个数是否为素数 //判断是否为素数
  •  试编写一个程序,找出2->N之间的所有质数。希望用尽可能快的方法实现。 【问题分析】:  这个问题可以有两种解法:一种是用“筛子法”,另一种是从2->N检查,找出质数。  先来简单介绍一下“筛法”,2~20...
  • 2018-02-09C语言编程输入一个正整数N,再输入N个正...用C语言做help me楼上写的不完整我是这样写的,纯C#include#includeint prime(int q){int j=2;if(q==1||q==2)return 1;elsefor(;j<=sqrt(q);j++)if(q%j==0...
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼[原创]求质数(C语言描述)【问题描述】:试编写一个程序,找出2->N之间的所有质数。希望用尽可能快的方法实现。【问题分析】:这个问题可以有两种解法:一种是用“筛子...
  • 100~200之间的全部素数分析:① 要判断一个数是不是素数,首先要知道什么是素数。回忆一下数学里的知识,什么是素数?只能被自身和1整除的正整数是素数。1既不是素数,也不是合数;2是最小的素数,也是唯一一个是...
  • 原发布者:tiandiduzun 判断素数C语言程序题目:判断101-200之间有多少个素数,并输出所有素数。解析:(1)程序分析:判断素数的方法:用一个数分别去除2到.#include int main(){ int T,m; dou...
  • 质数又称素数。指在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数。换句话说,只有两个正因数(1和自己)的自然数即为素数。比1大但不是素数的数称为合数。1...
  • 奇数 素数 同构数等五个 C语言程序
  • 使用c语言完成了一个求素数程序

    千次阅读 2015-03-15 09:51:52
    有题目要求完成一款"求素数"的程序,由于之前有思考过这个问题,此程序求"千万内"素数不挂
  • ●基本要求: 1)熟悉C语言程序结构框图; 2)熟悉C语言的两分支结构,多分支结构和循环结构; 3)熟悉结构化程序设计方法. ●学习要点: 1)流程图,NS图,循环结构; 2)结构化程序设计方法. 3.1程序结构框图; 3.1程序...
  • 目 录项目一 初识C语言——来自计算机的问候 1任务一 了解程序程序设计 1任务二 了解C语言 2任务三 了解Turbo C 2.0集成开发环境 5任务四 编辑源程序 11任务五 编译和链接程序 11任务六 运行程序 ...
  • C语言 程序 素数圈圈

    2016-07-29 17:44:57
    题目:将1,2,3,。。。,20这20个连续的自然数排成一圈,使任意两个相邻的自然数之和均为素数。 ...下面是我写的程序: #include int prime_num(int num)//判断是否为素数 {  int
  • 题目描述小于n的所有素数,按照每行10个显示出来。输入输入整数n(n<10000)。输出每行10个依次输出n以内的所有素数。如果一行有10个素数,每个素数后面都有一个空格。示例输入100示例输出2 3 5 7 11 13 17 19 23...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,617
精华内容 5,446
关键字:

求素数的c语言程序

c语言 订阅