我正在尝试学习如何编写和理解x86 Assembly,以及如何有效地使用GDB和相关工具。为此,我使用DDD作为GDB的前端。
我很难理解条件标记的是什么(eflag?)它们看起来都存储在同一个寄存器中。我将发布寄存器、汇编代码和相关的C代码。谢谢你的帮助。
在给定的断点处,寄存器显示如下:0x293 [CF AF SF IF]
以下是正在运行的C代码。(这不是我的编码风格的一个例子。我正在尝试强制GCC使用compl操作。)
int main( int argc, char* argv[] )
{
int a = 0;
int b = 2;
if( a == b ) // The
DECLARE
i number(3);
j number(3);
BEGIN
i := 2;
LOOP
j:= 2;
LOOP
exit WHEN ((mod(i, j) = 0) or (j = i));
j := j +1;
END LOOP;
IF (j = i ) THEN
dbms_output.put_line(i || ' is prime');
END IF;
i := i + 1;
exit WHEN i = 50;
EN
我编写了这段代码,用来搜索素数并将它们放入数组中。下面是:
int[] prime_array = new int[(int)s.upper_bound];
int index_in_array = 0;
boolean are_we_done = false;
int index = 1;
boolean is_prime = true;
while (!are_we_done) {
try {
for (int i = 1; i < index; i++) {
if ((index%i)==0) {
i
在我的代码中,用户输入要测试的数字,然后输入数字。如果一个数字可以被三个不同的数字除以,它就会打印一个"1“。否则,它会打印一个"0“。当我运行代码时,它只打印"0“。我试着修复一些括号,以查看语法中的某个地方是否搞砸了。
int distinct = 0;
int T = input.nextInt();
int [] nums = new int [T];
for (int n : nums) {
distinct = 0;
我有一个程序来检查给定数字从0到9999是否是素数(它是作为示例解决方案提供的):
public class Primzahl {
public static void main(String[] args) {
for (int i = 0; i < 10000; i++) {
System.out.println(i + " " + isPrimzahl(i));
}
System.out.println();
}
public static boolean isP
我正在试着一步一步地了解这个程序是如何工作的。
for n in range(2, 10):
for x in range(2, n):
if n % x == 0:
print(n, 'equals', x, '*', n//x)
break
else:
# loop fell through without finding a factor
print(n, 'is a prime number')
for i in range(
假设环境是x86。
编译器如何编译32位整数上的">“运算符。从逻辑上讲,我的意思是。没有任何关于组装的知识。
假设高级语言代码是:
int32 x, y;
x = 123;
y = 456;
bool z;
z = x > y;
编译器执行什么操作来计算expression x > y
它是否执行类似于(假设x和y是正整数)的操作:
w = sign_of(x - y);
if (w == 0)
// expression is 'false'
else if (w == 1)
// expression is 'true'
这些问题是如何归入P,NP,NP-Hard等类别的呢?套装?我不知道是否存在这样的问题,但启动我思考过程的是旅行推销员问题的一个可判定问题:
Given a list of cities and the distances between each pair of cities, and a
Hamiltonian path P, is P the shortest Hamiltonian path?
我怀疑我们不能在多项式时间内验证P的“最短”,因为这个决策问题甚至不是NP中的。那么,在这种情况下,它落在哪里呢?
我试着数一下有多少素数(除了1和0),直到有N个素数。但是不知怎么的,我的程序总是以循环无限循环结束。
int main (){
int n;
printf("Enter size N: ");
scanf("%d", &n);
int i, j, ctr = 0, flag = 0;
for (i = 2; ctr != n; i++){
for (j = 2; j < i; j++){
if (i%j==0){
因此,我正在尝试使用一些教程来学习Python,并且我决定创建自己的练习。我想创建一个脚本,计算出1到1000之间有多少个质数,并打印质数。这就是我到目前为止所知道的:
numberlist = []
a = 1
prime = True
while a < 1000:
a = a + 1
for divisor in range(2,a):
if a/divisor==int(a/divisor):
prime=False
if prime == True:
print a
我是从学习斯蒂芬科昌。方案7.4修订“程序”以生成素数,第2版:
#include <stdio.h>
#include <stdbool.h>
// Modified program to generate prime numbers
int main (void)
{
int p, i, primes[50], primeIndex = 2;
bool isPrime;
primes[0] = 2;
primes[1] = 3;
for ( p = 5; p <= 50; p = p + 2 ) {
这段代码运行的时间间隔为1-10,但对于间隔20-30,它正在编写21和27,我无法理解代码中有什么问题。我不想知道其他代码,我想知道我的代码有什么问题。
start = int(input("Enter the first number of the interval")) #starting of interval
end = int(input("Enter the last number of the interval")). #end of interval
for i in range(start, end+1):
for x in ran
谁能告诉我这在O(n)是如何工作的吗?
void manipulated_seive(int N)
{
// 0 and 1 are not prime
isprime[0] = isprime[1] = false ;
// Fill rest of the entries
for (long long int i=2; i<N ; i++)
{
// If isPrime[i] == True then i is
// prime number
if (isprime[i])
我如何写一个程序,列出所有性感的素数对,存在于n个数字中。
例如,如果n= 10,输出应该是(5,11)和(7,13)。
我的想法是在n中生成所有素数,然后将6添加到每个素数中,并检查i+6是否为素数。但它不工作,没有输出和程序结束。
#include <stdio.h>
int main() {
int i, j, n, k, isprime = 1, prime2, flag = 0;
scanf("%d", &n);
for (i = 3; i <= n; i++){
for (j
我正在制作一个x86汇编语言程序,我已经将我的名字存储在代码的数据部分,我想要创建一个循环来一次输出每个字符。我不知道该怎么做才好。任何帮助都会很好。我是x86的新手。到目前为止,我已经:
.DATA
name DWORD 4E617465h
.CODE
main PROC
mov eax, name
(begin my loop here)
#include <stdio.h>
#include <math.h>
int main()
{
int n, i, flag = 0;
printf("Enter the number\n");
scanf("%d", &n);
for (i = 2; i <= sqrt(n); i++)
{
if (n % i == 0)
{
flag = 1;
break;
}
}
简而言之,我再次在互联网上找到了这个任务:
从键盘输入整数,检查质数是否为素数。输入0时,程序结束。
到目前为止,我编写了检查整数是否为素数的逻辑。主要的绊脚石是,如果最后一个整数是0,我应该从一个字符串读取几个整数,并停止程序。因此,当我试图添加一个循环来迭代输入并检查该整数是否为素数时,我的逻辑就无法工作,它只返回第一个整数而不返回其他整数。
import java.util.Scanner;
public
class PrimeNumber
{
public
static void main(String[] args)
{
int temp;
好吧,我的问题不是如何找出一个数字是否是素数,因为我想我知道了,但更多的是如何让它正确地显示。
这是我的密码:
public static void main(String[] args) {
// Declare Variables
int randomNumbers = 0;
int sum = 0;
//Loop for number generation and print out numbers
System.out.print("The five random numbers are: ");
for (int i =