我一直在努力工作两天,绝对没有运气。我需要我的程序打印用户给出的范围并显示范围内的所有素数。所有非素数应打印为“ - ”。我需要每行10个数字,然后是|以及该行中的最后一个数字。它看起来像这样:
71 - 73 - - - - - 79 - | 80
我知道我需要使用printf,但我无法弄清楚在哪里放置我的print语句或者如何在开始换行之前停止printf语句停止10个数字。此外,我还无法弄清楚如何在使用printf的同时将非素数打印为“ - ”。每次我尝试它我都会收到错误。这是用户输入数字后的代码:
for(d=start;d<end;d++) {
b=0;
for(c=1;c<=d;c++){
if(d%c==0)
b=b+1;
}
if(b==2){
System.out.printf("%4d", d);
//prints prime numbers with the spacing required
primes=primes+1;
}
}
答案 0 :(得分:0)
一个选项是制作一个计数器,当计数器%10 == 0时,你打印一个新行。
答案 1 :(得分:0)
我建议你把问题分解成更小的子问题。例如,打印出一个引号的列表,不用担心格式或打印出给定范围内的数字,每行10个数字。在你弄清楚如何分别做这些之后,然后尝试将它们组合起来。
答案 2 :(得分:0)
在我提出问题后不久就知道了,这是我使用的代码:
for(d=start;d<=end;d++) {
b=0;
for(c=1;c<=d;c++){
if(d%c==0)
b=b+1;
}
if(b==2){
primes=primes+1;
if(d!=start){
System.out.printf("%4d", d);
}
}else{
if(d!=start){
System.out.printf(" -");
}
}
if(d%10==0&&d!=start){
System.out.printf(" | ");
System.out.printf("%4d", d);
System.out.println();
}
答案 3 :(得分:0)
在python中尝试一下,为您提供一个启动点,请考虑以下代码,
def prime_display(n):
for i in range(1, n+1):
if is_prime(i) == True:
print(i, end=' ')
else:
if divisible_by_10(i):
print(f'- | {i}', end='\n')
print('-', end=' ')
def divisible_by_10(n):
if (n % 10) == 0:
return True
return False
def is_prime(n):
if n > 1:
for i in range(2, n):
if (n % i) == 0:
return False
else:
return True
else:
return False
prime_display(39)
答案 4 :(得分:-1)
编译:gcc prime.c 运行(范围1-200):。/ a.out 1 200
#include<stdio.h>
#include<math.h>
int isPrime(int n){
if(n==1) return 0;
int i=2;
while(i<=sqrt(n))
if(n%i++==0)
return 0;
return 1;
}
int main(int argc, char *argv[]){
int a,b,count;
if(argc<3)
return 0;
a=atoi(argv[1]);
b=atoi(argv[2]);
count=1;
for(;a<=b;a++){
if(isPrime(a)) printf("%d ",a);
else printf("- ");
if(count++==10){
printf("| %d\n",a);
count=1;
}
}
return 0;
}