我需要在{c}制作一个程序,它会给我输入数字的素数(例如用户输入50来回写229) 所以,我在制作循环时陷入困境。 我要为行[100]定义行[0] = 2,行[1] = 3然后我使i = 4并尝试创建一个循环,对于数字i,我将每个数字与数字i分开在行中(因为我知道的是素数)并得到模块(0之后的数字,不确定它是如何在英语上说的),然后如果它们都有模块!= 0那么我知道它是素数而且我想把它添加到行中。
那么有人可以帮助我写这一行吗?非常感谢提前:))
#include <stdio.h>
int main ()
{
int i,numb=4,position,temp,temp1,row[100];
printf(" enter position (1-100)\n");
scanf("%d",&position);
if (position>100||position<0 )
{
printf("error,enter position between 1 and 100");
return(0);
}
row[0]=2;
row[1]=3;
i=2;
do
{
temp=numb%2;
temp1=numb%3;
if (temp!=0 && temp1!=0)
{
row[i]=numb;
i++;
}
numb++;
}
while (i<100);
printf("%d. prime number is %d",position,row[position]);
return 0;
}
好的,所以我需要更改我要求模块的部分,从机智2和3分配,要求模块从当时行中的所有数字中删除。谢谢你的帮助
答案 0 :(得分:1)
#include <stdio.h>
#define MAX_N 100
int main(void){
int i, odd, temp, position, n = 0, row[MAX_N];
row[n++]=2;
row[n++]=3;
for(odd = 5; n < MAX_N; odd += 2){
int is_prime = 1;//true
for(i = 1; i < n; ++i){
temp = row[i];
if(temp * temp > odd)
break;
if(odd % temp == 0){
is_prime = 0;//false
break;
}
}
if(is_prime)
row[n++] = odd;
}
printf(" enter position (1-%d)\n", MAX_N);
scanf("%d", &position);
if (position > 100 || position < 1){
printf("error,enter position between 1 and %d\n", MAX_N);
return 0;
}
printf("%d. prime number is %d", position, row[position - 1]);
return 0;
}